子类是否可重载父类方法

子类能否重载父类方法

百度百科是这样定义重载的,overload可直译为重载,它是指我们可以定义一些名称相同的方法,通过定义不同的输入参数来区分这些方法,然后再调用时,VM就会根据不同的参数样式,来选择合适的方法执行。

按我自己的理解重载针对的是方法而言,同名方法因参数不同而发生重载。而这些方法应该在同一个类里,如果不在同一个类里就可以直接根据类名的来区别,并不需要使用参数区分。子类重载父类方法,是因为子类能够继承父类的所有方法,所以发生重载的本质还是在同一个子类中。

说再多都不如代码来的简单直接:

public class A {

    private void A1(){

        System.out.println("父类私有");

    }

    public void A2(){

        System.out.println("父类公有");

    }

}

public class B extends A {

    private void A1(int a){

        System.out.println(a);

    }

    public void A2(int a){

        System.out.println(a);

    }

    public static void main(String[] args) {

        B b = new B();

        b.A1(1);

        //b.A1();编译报错

        b.A2();

        b.A2(1);

    }

}

输出结果:

1私有

父类公有

1公有

根据上面的代码可以得出结论,子类可以重载父类公有方法,但是不能重载父类私有方法。

原因是因为子类可以继承父类的所有方法,但是子类无法直接(重点)使用私有属性和方法。通俗说就是父类所有的方法和属性我都有,但是私有的我不能用。

你可能感兴趣的:(子类是否可重载父类方法)