Override
覆盖(又称重写)指重写父类的同名方法,参数,名称,返回值都必须一样,子类不能降低父类方法的可见性(否则无法实现多态)
Overload
重载,在同一个类中,使用同名方法,但方法参数必须有不同,个数或类型
class Father{
public void show(){
System.out.println("Father");
}
}
class Sub extends Father{
public void show(){
System.out.println("Sub");
}
public void show(String msg){
System.out.println("reload:" + msg);
}
public void show(String msg, String time){
System.out.println("reload:" + msg + " time:" + time);
}
public void show(int number){
System.out.println("reload:" + number);
}
}
若子类尝试降覆盖方法的可见性,编译会报错。
class Father{
public void show(){
System.out.println("Father");
}
}
class Sub extends Father{
private void show(){
System.out.println("Sub");
}
public void show(String msg){
System.out.println("reload:" + msg);
}
public void show(String msg, String time){
System.out.println("reload:" + msg + " time:" + time);
}
public void show(int number){
System.out.println("reload:" + number);
}
}
输出
Untitled.java:9: 错误: Sub中的show()无法覆盖Father中的show()
private void show(){
^
正在尝试分配更低的访问权限; 以前为public
1 个错误