package animal;
public class TestExtend {
class Parent{
private int i = 1;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
public void show(){
System.out.println("i = "+i);
}
}
class Child extends Parent{
private int j = 7;
public int getJ() {
return j;
}
public void setJ(int j) {
this.j = j;
}
public void show(){
System.out.println("j = "+j);
}
}
public void test(){
Parent p1 = new Parent();
Parent p2 = new Child();
Child c = new Child();
p1.setI(2);
p1.show();
/**
* p2只能访问到父类的set,get方法,为什么访问不到子类的呢?
* 但是又为什么只可以访问到子类的show方法呢?
*/
p2.setI(12);
p2.show();
c.setI(22);
c.setJ(32);
c.show();
}
public static void main(String[] args){
new TestExtend().test();
}
}
p2为什么只能访问到父类的set,get方法,而访问不到子类的呢?但是又为什么只可以访问到子类的show方法呢?
------解决方案--------------------------------------------------------
Parent p2 = new Child();
这是声明父类,创建子类. 声明什么类型,拥有什么类型的属性和方法. 创建的什么类型,执行什么类型的方法.(子类重写了父类的show(),实际运行的就是子类的方法。(这是java的多态)。