- 建立一个动物的层次结构,以抽象类Animal为根,Cat、Spider和Fish动物类实现接口Pet。使用接口和抽象类技术完成。类结构如图1所示。
图1 类结构
完成:
- 创建Animal类,它是所有动物类的抽象父类。
- 创建Spider类,继承Animal类。
- 创建Pet接口。
- 创建Cat类,继承Animal类并实现Pet接口。
- 创建Fish类,继承Animal类并实现Pet接口。
- 使用AnimalsTest类测试代码。
1. Animal类
(1)所有动物类的父类
(2)抽象类
(3)两个方法:walk()和eat(),输出内容随便给
(4)成员变量legs
abstract class Animal { public int legs; public Animal (int legs) { this.legs=legs; } public void walk () { System.out .println ("Animal is walking on legs!") ; } public abstract void eat(); }
2.Cat类
(1)创建cat类,继承父类Animal,接口Pet
(2)成员变量name,对他进行获取get,修改set
(3)两个方法:paly()和eat()
(4)引用父类变量 super(legs)
(5)创建两个构造方法:含参、不含参
public class Cat extends Animal implements Pet{ public Cat(int legs) { super(legs); } public void Cat() { } private String name; public void cat(String name) { this.name=name; } public String getName() { return name; } public void setName(String name ) { this.name=name; } public void play() { System.out.println("cat 正在 play!"); } public void eat() { System.out.println("cat 正在 eat!"); } }
3.Spider类
(1)创建Spide类,继承父类Animal,接口Pet
(2)成员变量name,对他进行获取get,修改set
(3)两个方法:paly()和eat()
(4)引用父类变量 super(legs)
(5)创建两个构造方法:含参、不含参
public class Spider extends Animal implements Pet{ private String name; public void Spider(String name) { this.name=name; } public Spider(int legs) { super(legs); // TODO Auto-generated constructor stub } public String getName() { return name; } public void setName(String name) { this.name = name; } public void play() { System.out.println("Spider 正在 play!"); } public void eat() { System.out.println("Spider 正在 eat!"); } }
4.Fish类
(1)创建Fish类,继承父类Animal,接口Pet
(2)成员变量name,对他进行获取get,修改set
(3)两个方法:paly()和eat()
(4)引用父类变量 super(legs)
(5)创建两个构造方法:含参、不含参
public class Fish extends Animal implements Pet{ private String name; public void Fish(String name) { this.name=name; } public void setName(String name) { this.name = name; } public String getName() { return name; } public Fish(int legs) { super(legs); // TODO Auto-generated constructor stub } public void eat() { // TODO Auto-generated method stub System.out.println("Fish 正在 eat!"); } public void walk() { System.out.println("Fish 正在 walking!"); } }
5.Pet接口
(1)创建Pet(宠物)接口
(2)两个方法:paly()、getName()、含参setName()
public interface Pet { void setName(String name); String getName(); static void play() { System.out.println(" is playing! "); } }
6.Animal类
(1)父类对象创建对象,用Spider类生成新的对象赋给a(父类对象),付给legs默认值8
(2)a.walk()这个方法其实调用的是父类的walk的方法
(3)而父类的eat()的方法是空的,所以调用自己
(4)Pet p;创建对象,用Fish类生成新的对象赋给p,付给legs默认值9
(5)给p的名字进行修改用到Pet类里的setName的方法,p.setName("小鱼");
public class AnimalTest { public static void main(String[] args) { Animal a; a=new Spider(8); a.walk(); a.eat(); // a=new Cat(4); a.walk(); a.eat(); // Pet p; p=new Fish(9); p.setName("小鱼"); System.out.print(p.getName()); Pet.play(); } }
代码运行截图: