class Dog {
  public void smell(Cat _cat){
  
    catch();    }
  public void smell(Food _food){    spit();
    Run();  }
}

解决方案 »

  1.   

    class Dog{
     private String dog_name;
     ……
     public Dog(){}
     
     public void smell(Odor _odor){
      doSomething();
     }
    }
    class Adog extends Dog{
     public void smell(Cat _cat){
     catch();
     }
    }
    class Bdog extends Dog{
     public void smell(Food _food){
      spit();
      Run();
     }
    }
      

  2.   

    public Dog(String dog_name ……){
    this.dog_name=dog_name;
    ……
    }
      

  3.   

    二楼的是正确的做法
    不过dog类最好还是interface的
      

  4.   

    呵呵。是楼主的表达有误啊。按楼主描述的意思,这不是多态而是重载,一楼的程序很好的说明了重载这个概念。二楼说的是多态,但与楼主的描述不同啊。要说多态,这样的描述才符合:
    获都可以嗅到猫的气味,但小狗A比较好动,一嗅到猫的气味就要去抓小猫,而小狗B比较懒惰,它嗅到小猫的气味却继续睡大觉。
    实现如下:
    interface Dog{
        void smell(Cat cat);
    }class ADog implements Dog{
        void smell(Cat cat){
             catch(cat);
        }
    }class BDog implements Dog{
        void smell(Cat cat){
             sleep();
        }
    }
      

  5.   

    Tasia(这里是CSDN吗?)  说的应该是重写吧  不是重载
      

  6.   

    我刚接触OOP,所以有些概念搞不清。
    这是我的书上看到的一个例子,是在讲多态时举的例子,原文是这样说的:
    再拿狗作比喻,一条狗的嗅觉是多态的。如果狗闻到帽的气味,它会吠叫并且追着猫跑。如果狗闻到食物的气味,它将分泌唾液并向盛着食物的碗跑去。两种状态下是同一种嗅觉器官在工作,差别在于闻到了什么气味,也就是有两种不同类型的数据作用于狗的鼻子!在一个Java程序中使用方法时,也可以采用这个通用的概念。
    多态的概念经常被说成是“一个接口,多种方法”。这意味着可以为一组相关的动作设计一个通用的接口。多态性允许用一个接口被必于同一类的多个动作使用。书上没具体将怎么实现这个多态,所以我象各位提问。