纠正
我这样做一个测试
Parent parent=new Parent();
parent.setI(20);
Son son=(Son)parent; //这一步就异常
son.setI(100); java.lang.ClassCastExceptionwhy?
我这样做一个测试
Parent parent=new Parent();
parent.setI(20);
Son son=(Son)parent; //这一步就异常
son.setI(100); java.lang.ClassCastExceptionwhy?
public class Son extends Parent {
public int i;
public int j;
/**
* @return
*/
public int getI() {
return i;
} /**
* @param i
*/
public void setI(int i) {
this.i = i;
}
public int getPI(){
return super.getI();
}}sorry
应该这样吧
Parent son=new Son();
son.setI(100);
(Son)son.getI();
只能用super,没别的办法。父类和子类可以定义相同的非private变量,子类的会屏蔽隐藏父类的同名变量.如果不在一个包内,不加权限修饰符的变量被子类继承之后不可用,跟private的一个效果
其实楼主你可以不用使用super的,
直接定义你的子类中的getPI()函数为
public int getPI(Parent x)
{
return x.i;
}
然后在main中直接用就可以了
Parent parent=new Parent();
parent.setI(20);
System.out.println(parent.i);
//Son son=(Son)parent; //这一步就异常
Son son = new Son();
son.setI(40);
System.out.println(son.i);
System.out.println(parent.getI());
System.out.println(son.getPI(parent));
这样应该符合你的要求吧。
好好看下TIJ
如果你想以son的实例来调用parent的方法,那是不可能的