日期:2014-05-20  浏览次数:20745 次

java继承类问题
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的多态)。