再问大家一个问题
class Parent {
private void method1(){
System.out.println("Parent's method1()");
}
public void method2(){
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Parent p=new Child();
p.method2();//里面的method1()方法为什么是 Parent类中的 而不是Child类中的?
}
}输出结果为什么是 Parent's method2()
Parent's method1() ???
知道 Child 类中method1() 方法不是Parent 类中method1() 方法的重写,因为Parent 类中method1() 是private 的
可还是想不明白? 请问大家应该怎么理解啊?
class Parent {
private void method1(){
System.out.println("Parent's method1()");
}
public void method2(){
System.out.println("Parent's method2()");
method1();
}
}
class Child extends Parent{
public void method1(){
System.out.println("Child's method1()");
}
public static void main(String args[]){
Parent p=new Child();
p.method2();//里面的method1()方法为什么是 Parent类中的 而不是Child类中的?
}
}输出结果为什么是 Parent's method2()
Parent's method1() ???
知道 Child 类中method1() 方法不是Parent 类中method1() 方法的重写,因为Parent 类中method1() 是private 的
可还是想不明白? 请问大家应该怎么理解啊?
因此这两个方法没有任何关系,调用时完全相等于名称不同。
可还是想不明白? 请问大家应该怎么理解啊?
-----------------------------
有什么不明白啊?这两个类中的方法是构不成方法的重写的,也就是没有关系的;Parent p=new Child();
p.method2();这里的用到的是:类的向上转型;New Child()类附值给Parent类型;
这个时候有个特点就是:Parent类中的方法都是可见的,而Child类中在Parent中不存在的方法是不可见的;
重构的就不用说了;该明白了吧!