3.4、方法的覆写

  1. 3.4、方法的覆写

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方法()的形式调用。


转载请注明来源