希望能有一个很好的实例让我深刻理解多态?急求。。

解决方案 »

  1.   

    class A{
     public String f(D obj){return ("A and D");}
     public String f(A obj){return ("A and A");}
    }
    class B extends A{
     public String f(B obj){return ("B and B");}
     public String f(A obj){return ("B and A");}
    }
    class C extends B{}
    class D extends B{}
    public class testJava{
     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.f(a1));
      System.out.println(a1.f(b));
      System.out.println(a1.f(c));
      System.out.println(a1.f(d));
      System.out.println(a2.f(a1));
      System.out.println(a2.f(b));
      System.out.println(a2.f(c));
      System.out.println(a2.f(d));
      System.out.println(b.f(a1));
      System.out.println(b.f(b));
      System.out.println(b.f(c));
      System.out.println(b.f(d));
     }
    }
      

  2.   


    class Animal{                          //多态练习
    public String name;

    Animal(String name){
    this.name=name;
    }

    public void enjoy(){
    System.out.println("叫声");
     }
    }class Bird extends Animal{
    public String furcolor;

    Bird(String name,String furcolor){
    super(name);
    this.furcolor=furcolor;
    }

    public void enjoy(){
    System.out.println("啾啾啾......");
    }
    }class Rabbit extends Animal{
    public String furcolor;

    Rabbit(String name,String furcolor){
    super(name);
    this.furcolor=furcolor;
    }

    public void enjoy(){
    System.out.println("兔子叫声......");
    }
    }class Lady {
    public String location,name;
    public Animal pet;

    public Lady(String name,String location,Animal pet){
    this.pet=pet;
    this.name=name;
    this.location=location;
    }

    public void mypetenjoy(){
    pet.enjoy();
    }
    }public class testLady{
    public static void main(String args[]){
    Bird b=new Bird("黄鹂","黄色羽毛");
    Rabbit r=new Rabbit("白色","红色眼睛");

    Lady l1=new Lady("小雨","北京",b);
    Lady l2=new Lady("宇轩","杭州",r);

    l1.mypetenjoy();
    l2.mypetenjoy();
    } }这里有个实例,楼主可以看看...
      

  3.   

    楼主可以看一下设计模式,可能可以解决你的问题。本人当初学完Java之后发觉跟C语言(面向过程)没两样,看完设计模式后才发现它们比较大的区别。
      

  4.   

    我给你举个例子吧,JAVA好比一个拉货的车(一个方法),你给他放不同的东西(参数),他就变成了拉不同货物的车(运煤的,送水的,抢修工程的),多个车之间可以有关系,也可以没有关系。总之,多态就是为了提高代码的重用性而设计的。再举个例子,你看过JAVA的帮助文档吧,有的类有很多构造方法,但是名字都是一样的,参数不一样,你试想下,如果这个类的每个构造方法的名字都不一样的话(不是多态的情况),岂不是一大悲剧...