问答详情
源自:10-1 Java 中的多态

请问这题怎么做

一)在base包中


   编写动物(Animal)接口,定义抽象方法

   eat(),sleep(),show()


   定义一个抽象类 哺乳动物 Mammal,实现Animal接口(但是暂不实现它的三个抽象方法),在这个抽象类中增加milk吃奶的抽象方法

   

   定义一个抽象类 爬行动物 Reptile ,实现Animal接口(但是暂不实现它的三个抽象方法),在这个抽象类中增加crawl 爬行的抽象方法。


(二)在utility包中


   定义 Person,Monkey,Cat,Dog,继承Mammal,实现其所有方法,每个类中定义两个属性,提供两个构造函数,提供打印输出的方法show(),输出动物的属性;


   定义 Snake,Crocodile,继承Reptile,实现其所有方法,每个类中定义两个属性,提供两个构造函数。提供打印输出的方法show(),输出动物的属性。


(三)在javastudy包中,定义一个类Test1,


   定义一个长度为6的Animal数组,分别存放以上的每一种动物,循环取出每个动物,调用其方法。要求所有方法都要被调用到【eat,sleep,show,milk,crawl】,其中要用到instanceof,把代码写到精简。


提问者:慕用2202270 2017-10-15 18:32

个回答

  • 瓶子修
    2017-11-02 12:11:25

    代码:
    //Animal.java
    package base;
    public interface Animal {
       public abstract  void eat();
       public abstract  void sleep();
       public abstract  void show();
    }
    
    //Mammal.java
    package base;
    public abstract class Mammal implements Animal{
        public abstract void milk();
    }
    
    //Reptile.java
    package base;
    public abstract class Reptile implements Animal {
        public abstract void crawl();
    }
    
    //Cat.java
    package utility;
    import base.Mammal;
    public class Cat extends Mammal {
        private String species;
        private String keyLink;
        public Cat(){
            species="Cat";
            keyLink="Mammal";
        }
        public Cat(String species,String keyLink){
            this.species=species;
            this.keyLink=keyLink;
        }
        public void eat(){System.out.println(species+" is eating.");}
        public void sleep(){System.out.println(species+" is sleeping.");}
        public void milk(){System.out.println(species+" is drinking milk.");}
        public  void show(){
            System.out.println("species:"+species);
            System.out.println("key link:"+keyLink);
        }
    }
    
    //Dog.java
    package utility;
    import base.Mammal;
    public class Dog extends Mammal {
        private String species;
        private String keyLink;
        public Dog(){
            species="Dog";
            keyLink="Mammal";
        }
        public Dog(String species,String keyLink){
            this.species=species;
            this.keyLink=keyLink;
        }
        public void eat(){System.out.println(species+" is eating.");}
        public void sleep(){System.out.println(species+" is sleeping.");}
        public void milk(){System.out.println(species+" is drinking milk.");}
        public  void show(){
            System.out.println("species:"+species);
            System.out.println("key link:"+keyLink);
        }
    }
    
    //Monkey.java
    package utility;
    import base.Mammal;
    public class Monkey extends Mammal {
        private String species;
        private String keyLink;
        public Monkey(){
            species="Monkey";
            keyLink="Mammal";
        }
        public Monkey(String species,String keyLink){
            this.species=species;
            this.keyLink=keyLink;
        }
        public void eat(){System.out.println(species+" is eating.");}
        public void sleep(){System.out.println(species+" is sleeping.");}
        public void milk(){System.out.println(species+" is drinking milk.");}
        public  void show(){
            System.out.println("species:"+species);
            System.out.println("key link:"+keyLink);
        }
    }
    
    //Person.java
    package utility;
    import base.Mammal;
    public class Person extends Mammal {
        private String species;
        private String keyLink;
        public Person(){
            species="Person";
            keyLink="Mammal";
        }
        public Person(String species,String keyLink){
            this.species=species;
            this.keyLink=keyLink;
        }
        public void eat(){System.out.println(species+" is eating.");}
        public void sleep(){System.out.println(species+" is sleeping.");}
        public void milk(){System.out.println(species+" is drinking milk.");}
        public void show(){
            System.out.println("species:"+species);
            System.out.println("key link:"+keyLink);
        }
    }
    
    //Crocodile.java
    package utility;
    import base.Reptile;
    public class Crocodile extends Reptile {
        private String species;
        private String keyLink;
        public Crocodile(){
            species="Crocodile";
            keyLink="Reptile";
        }
        public Crocodile(String species,String keyLink){
            this.species=species;
            this.keyLink=keyLink;
        }
        public  void eat(){System.out.println(species+" is eating.");}
        public  void sleep(){System.out.println(species+" is sleeping.");}
        public void crawl(){System.out.println(species+" is crawling.");}
        public void show(){
            System.out.println("species:"+species);
            System.out.println("key link:"+keyLink);
        }
    }
    
    //Snake.java
    package utility;
    import base.Reptile;
    public class Snake extends Reptile {
        private String species;
        private String keyLink;
        public Snake(){
            species="Snake";
            keyLink="Reptile";
        }
        public Snake(String species,String keyLink){
            this.species=species;
            this.keyLink=keyLink;
        }
        public  void eat(){System.out.println(species+" is eating.");}
        public  void sleep(){System.out.println(species+" is sleeping.");}
        public void crawl(){System.out.println(species+" is crawling.");}
        public void show(){
            System.out.println("species:"+species);
            System.out.println("key link:"+keyLink);
        }
    }
    
    //Test1.java
    package javastudy;
    import base.*;
    import utility.*;
    public class Test1 {
        public static  void main(String args[]){
            Animal[] animal=new Animal[]{new Cat(),new Crocodile(),new Dog(),new Monkey(),new Person(),new Snake()};
            for(Animal i:animal){
                i.eat();
                i.sleep();
                if(i instanceof Mammal){
                    Mammal m=(Mammal)i;
                    m.milk();
                }
                else if(i instanceof Reptile){
                    Reptile r=(Reptile)i;
                    r.crawl();
                }
                else {System.err.println("error!");}
                i.show();
                System.out.println("--------------");
            }
        }
    }
    
    运行结果:
    Cat is eating.
    Cat is sleeping.
    Cat is drinking milk.
    species:Cat
    key link:Mammal
    --------------
    Crocodile is eating.
    Crocodile is sleeping.
    Crocodile is crawling.
    species:Crocodile
    key link:Reptile
    --------------
    Dog is eating.
    Dog is sleeping.
    Dog is drinking milk.
    species:Dog
    key link:Mammal
    --------------
    Monkey is eating.
    Monkey is sleeping.
    Monkey is drinking milk.
    species:Monkey
    key link:Mammal
    --------------
    Person is eating.
    Person is sleeping.
    Person is drinking milk.
    species:Person
    key link:Mammal
    --------------
    Snake is eating.
    Snake is sleeping.
    Snake is crawling.
    species:Snake
    key link:Reptile
    --------------


  • 程序龍
    2017-10-16 19:04:04

    好难呀!!!还不会