可不可以这样:
  在b中通过super调用a的print(),然后再在c中调用b的这个method!
小弟初学java四天,如果不对请多多原谅,献丑了

解决方案 »

  1.   

    是不是可以这样:
    在C类中设定一个方法,其参数行为(A a)
    方法体中使用if(a instanceof A)
               {
                    a.print();
               }
    将一个类的实例传入,如果是A类型的则会执行A中的print();
    你还可以去查一下“下溯造型”==“DownCasting”;
      

  2.   

    如果是继承,只要你的设计没问题,调用c中print时,自己就会调用a中的,
    毕竟是继承嘛!不要忘了!
      

  3.   

    辛苦辛苦,这个知识点给忘记了,呵呵,好不容易找了回来,你自己看看吧
    public class ShadowTest {
    public static void main(String s[]){
    new STChild().demo();
    }
    }
    class STGrandParent {
    double wealth = 50000.00;
    public double getWealth() {
    System.out.println("GrandParent-" + wealth);
    return wealth;
    }
    }
    class STParent extends STGrandParent {
    double wealth = 100000.00;
    public double getWealth() {
    System.out.println("Parent-" + wealth);
    return wealth;
    }
    }
    class STChild extends STParent {
    double wealth = 200000.00;
    public double getWealth() {
    System.out.println("Child-" + wealth);
    return wealth;
    }
    public void demo() {
    getWealth(); // Calls Child method
    super.getWealth(); // Calls Parent method
    //super.super.getWealth(); // Compiler error, GrandParent method cannot be accessed
    ((STParent)this).getWealth(); // Calls Child method, due to dynamic method lookup
    ((STGrandParent)this).getWealth(); // Calls Child method, due to dynamic method
    // lookup
    System.out.println(wealth); // Prints Child wealth
    System.out.println(super.wealth); // Prints Parent wealth
    System.out.println(((STParent)(this)).wealth); // Prints Parent wealth
    System.out.println(((STGrandParent)(this)).wealth); // Prints GrandParent wealth
    }
    }
      

  4.   

    修正一下楼上的,这样可以实现上上级方法回嗍,但是记住,面向对象的类继承最好的是到3层,如果多了将大大增加系统的开销。你可以在每一层实现对上层的重载。
    public class ShadowTest {
        public static void main(String args[]){
            new STChild().demo();
        }
    }
    class STGrandParent {
        double wealth = 50000.00;
        public double getWealth() {
            System.out.println("GrandParent-" + wealth);
            return wealth;
        }
    }
    class STParent extends STGrandParent {
        double wealth = 100000.00;
        public double getWealth() {
            System.out.println("Parent-" + wealth);
            return wealth;
        }
         public double getGrandPWealth() {
            return super.getWealth();
        }
    }
    class STChild extends STParent {
        double wealth = 200000.00;
        public double getWealth() {
            System.out.println("Child-" + wealth);
            return wealth;
        }
        public double getGrandPWealth() {
            return super.getGrandPWealth();
        }
        public void demo() {
            getWealth(); // Calls Child method
            super.getWealth(); // Calls Parent method
            //super.super.getWealth(); // Compiler error, GrandParent method cannot be accessed
            ((STParent)this).getWealth(); // Calls Child method, due to dynamic method lookup
            ((STGrandParent)this).getWealth(); // Calls Child method, due to dynamic method
            this.getGrandPWealth(); // Calls GrandParent method;
            // lookup
            System.out.println(wealth); // Prints Child wealth
            System.out.println(super.wealth); // Prints Parent wealth
            System.out.println(((STParent)(this)).wealth); // Prints Parent wealth
            System.out.println(((STGrandParent)(this)).wealth); // Prints GrandParent wealth
        }
    }
      

  5.   

    too Patric_Dk
    so goog  bright boy
      

  6.   

    to ggyy    goog 是嘛意思?