问题
今天复习java的时候看笔记:子类可以继承父类中左右属性,不管私有公有,但是只能继承非私有的方法,然后搜索引擎一搜发现网上说的是私有的方法也是能继承的,理由大多是:父类写一个公有的方法,然后公有方法去调用那个私有的方法,子类再去调用这个父类的公有方法,发现是可以正常执行的。这跟我的笔记矛盾了,于是我想了一个方法来验证。
重写
首先我们了解一下重写,子类可以重写和父类中名称相同的方法来覆盖父类中的方法,重写的规则:
方法
首先我们来验证一下第三条规则的反例
首先写一个父类
//父类
public class father {
//注意这里的返回值类型是void
public void test(){
System.out.println("父类中的test");
}
}
再写一个子类
public class son extends father{
//这里的返回值类型是String,是大于子类中的方法的
public String test(){
System.out.println("子类中的test");
return "test";
}
//可执行测试方法
public static void main(String[] args) {
son test2 = new son();
test2.test();
}
}
理论上,子类方法返回值类型要小于等于父类,所以这里报错了
重点来了,此时,我们将父类中方法的权限修饰符改成private,发现报错消失了,并且方法可以执行成功,这说明子类并没有继承并且重写父类中的私有方法,而是创建了一个属于自己的方法
最后
以上只是我想到的一个来验证的方法,可能会有漏洞,欢迎提出。