public class Polymorphism { public static void main(String[] args) {
  A a1 = new A();
  A a2 = new B();
  B b = new B();
  C c = new C();
  D d = new D();
  System.out.println(a1.show(b));
  System.out.println(a1.show(c));
  System.out.println(a1.show(d));
  System.out.println(a2.show(b));
  System.out.println(a2.show(c));
  System.out.println(a2.show(d));
  System.out.println(b.show(b));
  System.out.println(b.show(c));
  System.out.println(b.show(d));
 }
}class A{
 public String show(D obj){
  return("A and D");
 }
 public String show(A obj){
  return("A and A");
 }
}class B extends A{
 public String show(B obj){
  return("B and B");
 }
 public String show(A obj){
  return("B and A");
 }
}class C extends B{
 
}class D extends B{
 
}Exception in thread "main" java.lang.NoSuchMethodError: A.show(LA;)Ljava/lang/String;
at Polymorphism.main(Polymorphism.java:9)
类A已经被指定 为什么?

解决方案 »

  1.   

    public class Polymorphism {  public static void main(String[] args) { 
      A a1 = new A(); 
      A a2 = new B(); 
      B b = new B(); 
      C c = new C(); 
      D d = new D(); 
      System.out.println(a1.show(b)); 
      System.out.println(a1.show(c)); 
      System.out.println(a1.show(d)); 
      System.out.println(a2.show(b)); 
      System.out.println(a2.show(c)); 
      System.out.println(a2.show(d)); 
      System.out.println(b.show(b)); 
      System.out.println(b.show(c)); 
      System.out.println(b.show(d)); 

    }  class A{ 
    public String show(D obj){ 
      return("A and D"); 

    public String show(A obj){ 
      return("A and A"); 

    }  class B extends A{ 
    public String show(B obj){ 
      return("B and B"); 

    public String show(A obj){ 
      return("B and A"); 

    }  class C extends B{  }  class D extends B{  } 
    //-----------------------
    A and A
    A and A
    A and D
    B and A
    B and A
    A and D
    B and B
    B and B
    A and D打印出来了,没有问题啊,不知道lz为什么不能运行!!