问题2: 私有方法能否被子类改写?
public class Test{
public static void main(String[] args){
B bb = new B();
bb.b1();
}
}
//
class A{
private void a1(){
System.out.println("我是a1() 是private,被同包中的类B继承了,但是不能被B直接使用,我通过a5()来间接被类B使用");
}
void a2(){
System.out.println("我是a2() 是default,我被同包中的类B继承了,被B使用了");
}
protected void a3(){
System.out.println("我是a3() 是protected,我被同包中的类B继承了,被B使用了");
}
public void a4(){
System.out.println("我是a4() 是public,我被同包中的类B继承了,被B使用了");
}
public void a5(){
a1();
}
public void a6(){
a2();
}
public void a7(){
a3();
}
public void a8(){
a4();
}
}
class B extends A{
public void b1(){
a1();//ok
a2();//ok
a3();//ok
a4();//ok
a5();//ok*********注意通过这种写法最后调用的是重写前的a1()*************???????????
a6();
a7();
a8();
}
private void a1(){
System.out.println("我是重写的a1(),证明了private 可以被重写");
}
public void a2(){
System.out.println("我是重写的a2()");
}
public void a3(){
System.out.println("我是重写的a3()");
}
public void a4(){
System.out.println("我是重写的a4()");
}
}
程序输出:
我是重写的a1(),证明了private 可以被重写
我是重写的a2()
我是重写的a3()
我是重写的a4()
我是a1() 是private,被同包中的类B继承了,但是不能被B直接使用,我通过a5()来间接被类B使用
我是重写的a2()
我是重写的a3()
我是重写的a4()
///
通过输出可以看出。私有方法a1()似乎可以被重新,但是通过a5()间接调用,仍是重写前的a1().
但是非私有的方法a2(),a3(),a4()却不存在这个问题,百思考不得其解???????????