子类是否可重载父类方法

子类能否重载父类方法

百度百科是这样定义重载的,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公有

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容