有三个类,A,B,C,B继承A,C继承B.
   A有个point()方法,是"打印A",
   B覆盖了point()方法,是“打印B”,
   C覆盖了point()方法,是“打印C”
   A有个run()方法,里面执行了 this.point(),
   B的run()方法里面 {super.point();this.point()};
   C的run()方法里面{super.point();this.point()}
   执行C的run()方法,我希望"打印A""打印B""打印C",但实际是"打印C","打印C","打印C",我应该如何修改我的代码才能达到我需要的效果?

解决方案 »

  1.   


    class A{
    public void point(){
    System.out.println("point A");
    }

    public void run(){
    point();
    }
    }class B extends A{
    public void point(){
    super.point();
    System.out.println("point B");
    }
    }class C extends B{
    public void point(){
    super.point();
    System.out.println("point C");
    }
    }
    这样就可以做到了。
      

  2.   

    首先在C的run中,super.point();this.point() 是不会有三个输出吧!super.point();调用类B的point,打印B
    this.point() ;调用类C的point,打印C不会有三个啊。
    没看到你的代码。
      

  3.   

    class aaaaaaa{ 

    public static void main(String[] args) { 
    new c1().run();
      
    }}class a1{
    void point(){
    System.out.println("a1");
    }
    void run(){
    this.point();
    }
    }class b1 extends a1 {
    void point(){
    System.out.println("b1");
    }
    void run(){
    this.point();
    super.point();
    }
    }class c1 extends b1{
    void point(){
    System.out.println("c1");
    }
    void run(){
    this.point();
    super.run();
    }
    }
    跟LS差不多额
      

  4.   

    LZ你确定结果是"打印C","打印C","打印C"?  我做了个测试,结果是"打印B","打印C",代码如下
    class A{ 
       public void point(){
        System.out.println("打印A");  }
       
       public void run(){
          this.point();
         }

    class B extends A{
    public void point(){
        System.out.println("打印B");  }
      
      public void run(){
         super.point();
          this.point();
         }
    }


    class C extends B{
    public void point(){
      System.out.println("打印C"); }
      
      public void run(){
         super.point();
          this.point();
       
       }
    }


    public class Test1{
    public static void main(String[] args){
      C c = new C();
      c.run();
    }
    }
      

  5.   

    如果LZ的意思的话,只需要做3个构造器就可以了,因为有子类必须要先构造父类,在构造器中输出语句就可以了代码如下class A{ 
      
       A(){ System.out.println("打印A");  }
      
       public void point(){
        System.out.println("打印A");  }
       
       public void run(){
          this.point();
         }

    class B extends A{

    B(){System.out.println("打印B");  }
    public void point(){
        System.out.println("打印B");  }
      
     /* public void run(){
         super.point();
          this.point();
         }*/
    }


    class C extends B{

    C(){System.out.println("打印c");  }

    public void point(){
      System.out.println("依次打印A,B,C"); }
      
     /* public void run(){
         super.point();
          this.point();
       
       }*/
    }


    public class Test1{
    public static void main(String[] args){
      C c = new C();
      c.run();
    }
    }
      

  6.   


    class A {
    void point() {
    System.out.println("打印A");
    }

    void run() {
    this.point();
    }}class B extends A {
    void point() {
    System.out.println("打印B");
    }

    void run() {
    super.point();
    }
    }public class C extends B {
    void point() {
    System.out.println("打印C");
    }

    void run() {
    super.run();
    super.point();
    this.point();
    }

    public static void main(String[] args) {
    new C().run();
    }
    }
      

  7.   

    你主要问题出在执行C的run()方法,run(){super.point();this.point()}你这里的super.point()没有继承A打印的方法
    你只会打出b,c
    你学习下一楼的做法
    我就不说了