纠正
我这样做一个测试
Parent parent=new Parent();
         parent.setI(20);
         Son son=(Son)parent;   //这一步就异常
         son.setI(100);   java.lang.ClassCastExceptionwhy?

解决方案 »

  1.   

    你好像根本没定义son类哦!搞错了吧
      

  2.   

    子类
    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
      

  3.   

    parent 不是Son类的实例,当然不能case了
    应该这样吧
    Parent son=new Son();
    son.setI(100);
    (Son)son.getI();
      

  4.   

    楼上的,他是想调用Parent类的getI(),而且照你的写法应该是((Son)son).getI();
    只能用super,没别的办法。父类和子类可以定义相同的非private变量,子类的会屏蔽隐藏父类的同名变量.如果不在一个包内,不加权限修饰符的变量被子类继承之后不可用,跟private的一个效果
      

  5.   

    楼上的peter207(辉) 没理解楼主的意思吧,
    其实楼主你可以不用使用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));
    这样应该符合你的要求吧。
      

  6.   

    继承的关系没有弄懂
    好好看下TIJ
      

  7.   

    除非在son的方法中super.setI(i)
    如果你想以son的实例来调用parent的方法,那是不可能的