3.4、方法的覆写
方法的覆写是发生在继承的关系之中,子类覆写了父类中的相关方法。
子类定义了与父类同名的方法,称为方法的覆写,在方法覆写的时候一定要注意访问权限问题,被覆写的方法不能拥有比子类更严格的访问权限。
目前所学习到的访问权限:priva、public、default,权限由小到大的划分:private<default<public
所以,如果现在在父类中使用的是public访问权限,那么子类覆写的权限只能是public而不能是其他的。
class A{
public void fun(){
System.out.println("A类中定义的方法。");
}
}
class B extends A{
public void fun(){ //称为方法的覆写
System.out.println("B类中定义的方法");
}
}
public class Demo02 {
public static void main(String args[]) {
B b = new B();
b.fun();
}
}
在使用子类实例化对象调用类中被覆写过的方法时,调用的永远是被覆写过的操作。
思考:
如果现在在父类中使用了private访问权限,而在子类中使用了default访问权限,那么这样的操作叫覆写吗?
在讲解之前一定要首先掌握一个原则:只要是使用子类实例化对象,调用的方法也被子类覆写过的话,则永远调用的是覆写过的操作。
class A{
private void fun(){
System.out.println("A类中定义的方法。");
}
public void print(){
this.fun();
}
}
class B extends A{
public void fun(){
System.out.println("B类中定义的方法");
}
}
public class Demo02 {
public static void main(String args[]) {
B b = new B();
b.fun();
}
}
记住:永远不是覆写,而是重新定义
class A{
public void fun(){
System.out.println("A类中定义的方法。");
}
}
class B extends A{
public void fun(){
super.fun();
System.out.println("B类中定义的方法。");
}
}
public class Demo02 {
public static void main(String args[]) {
B b = new B();
b.fun();
}
}
如果希望调用父类中被子类覆写的方法,则只能通过super方法()的形式调用。
转载请注明来源