HOW2J——JAVA基础——接口与继承综合练习

    UML类图(Unified Modeling Language,统一建模语言),用于描述类的属性、方法以及类与类之间的关系。


图片均来自HOW2J.CN

/*Animal类:
1. 创建Animal类,它是所有动物的抽象父类。
2. 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。
3. 定义一个受保护的构造器,用来初始化legs属性。
4. 声明抽象方法eat。
5. 声明具体方法walk来打印动物是如何行走的(包括腿的数目)
*/
public abstract class Animal {
	protected int legs;
	
	protected Animal(int legs){
		this.legs=legs;
	}
	
	public abstract void eat();
	
	public void walk(){
		System.out.println("walk with "+legs+" legs.");
	}
}
/*宠物接口:
1. 提供getName() 返回该宠物的名字
2. 提供setName(String name) 为该宠物命名
3. 提供 play()方法
*/
public interface Pet {
	public abstract String getName();
	
	public abstract void setName(String name);
	
	public abstract void play();
}
/*Spider类:
1. Spider继承Animal类。
2. 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。
3. 实现eat方法
*/
public class Spider extends Animal{
	public Spider(){
		super(8);
	}
	
	@Override
	public void eat(){
		System.out.println("Spiders eat insects.");
	}
}
/*Cat类:
1. 该类必须包含String属性来存宠物的名字。
2. 定义一个构造器,它使用String参数指定猫的名字;
	该构造器必须调用超类构造器来指明所有的猫都是四条腿。
3. 另定义一个无参的构造器。
	该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数
4. 实现Pet接口方法。
5. 实现eat方法。
*/
public class Cat extends Animal implements Pet{
	String name="cat";
	
	public Cat(){
		this("");
	}
	public Cat(String name){
		super(4);
		this.name=name;
	}
	
	@Override
	public String getName(){
		return name;
	}
	@Override
	public void setName(String name){
		this.name=name;
	}
	@Override
	public void play(){
		System.out.println(name+" likes to play with Kitty");
	}
	@Override
	public void eat(){
		System.out.println(name+" eats fishes.");
	}
}
/*Fish类:
1. 创建Fish类,它继承Animal类
2. 重写Animal的walk方法以表明鱼不能走且没有腿。
3. 实现Pet接口
4. 无参构造方法
5. 提供一个private 的name属性
*/
public class Fish extends Animal implements Pet{
	private String name="";
	
	public Fish(){
		super(0);
	}
	
	@Override
	public void walk(){
		System.out.println("Fishes have no legs and cannot walk.");
	}
	@Override
	public void eat(){
		System.out.println(name+" eats shrimp.");
	}
	
	@Override
	public String getName(){
		return name;
	}
	@Override
	public void setName(String name){
		this.name=name;
	}
	@Override
	public void play(){
		System.out.println(name+" likes to play with Nemo");
	}
}

猜你喜欢

转载自blog.csdn.net/yaocong1993/article/details/80001976