Java中重载(Overload)与重写(Override)的区别
重写(Override)
重写,即子类对自己能够访问父类的方法进行重写编写,但要求方法的形参和返回值不能改变。重写能够使得子类对根据需求,实现更具体的行为。
举个例子:
class Animal {
public void 新陈代谢{
System.out.println("动物能够进行新陈代谢");
}
}
class Dog extends Animal {
public void 新陈代谢 {
System.out.println("狗能新陈代谢");
}
}
在上面这个例子中,Dog继承了Animal,并且对父类的新陈代谢
方法进行重写,实现了自己的新陈代谢
方法
方法的重写还有一些更具体的规则,如下
访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为 public,那么在子类中重写该方法就不能声明为 protected
父类的成员方法只能被它的子类重写
声明为 final 的方法不能被重写
声明为 static 的方法不能被重写,但是能够被再次声明
构造方法不能被重写
重载(Overload)
重载(Overload)要求方法名相同,但参数不同,返回值可以相同也可以不相同
再举个例子
public class Overload {
public void test() {
System.out.println("我没有传入参数,也没有返回值");
}
public int test() {
System.out.println("我没有传入参数,但是我返回了一个值");
return 1;
}
public void test(int a) {
System.out.println("我被传入了一个参数" + a);
}
public String test(int a, String s) {
System.out.println("我有一个参数 " + a + "还返回 " + s);
return s;
}
public String test(String s, int a) {
System.out.println("我有一个参数 " + a + "还返回 " + s + "但参数顺序不一样");
return s;
}
}
希望这篇文章对你有所帮助