学习资源:https://how2j.cn/k/interface-inheritance/interface-inheritance-practise/679.html
接口与继承 练习
UML图
UML-Unified Module Language
统一建模语言,可以很方便的用于描述类的属性,方法,以及类和类之间的关系

Animal
- 创建Animal类,它是所有动物的抽象父类。
- 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。
- 定义一个受保护的构造器,用来初始化legs属性。
- 声明抽象方法eat。
- 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。
package pack5;
public abstract class Animal {
protected int legs;//腿的数量
protected Animal(int legs){
this.legs=legs;
}
public abstract void eat();
public void walk(){
System.out.println("Animal walk");
}
}
pet
根据UML类创建pet(宠物)接口
- 提供getName() 返回该宠物的名字
- 提供setName(String name) 为该宠物命名
- 提供 play()方法
package pack5;
public interface pet {
public String getName();
public void setName(String name);
public void play();
}
Spider
- Spider继承Animal类。
- 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。
- 实现eat方法
package pack5;
public class Spider extends Animal {
Spider(){
super(8);
}
public void eat(){
System.out.println("Spider eat");
}
}
Cat
- 该类必须包含String属性来存宠物的名字。
- 定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是四条腿。
- 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数
- 实现Pet接口方法。
- 实现eat方法。
package pack5;
public class Cat extends Animal implements pet {
public String name;
public Cat(String name){
super(4);
this.name=name;
}
public Cat(){
super(4);
this.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");
}
}
Fish+测试代码
- 创建Fish类,它继承Animal类
- 重写Animal的walk方法以表明鱼不能走且没有腿。
- 实现Pet接口
- 无参构造方法
- 提供一个private 的name属性
package pack5;
import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;
public class Fish extends Animal implements pet{
public String name;
public Fish(){
super(0);
}
public String getName(){
return "Fish";
}
public void setName(String name){
this.name=name;
}
public void play(){
System.out.println("Fish play");
}
public void eat(){
System.out.println("Fish eat");
}
public void walk(){
System.out.println("Fish have not the leg,can not walk");
}
//测试代码
public static void main(String args[]){
// Spider
Spider spider=new Spider();
System.out.println(spider.legs);
spider.eat();
// Cat
Cat cat=new Cat();
System.out.println(cat.legs);
cat.eat();
cat.setName("芊芊");
System.out.println(cat.getName());
cat.play();
// Fish
Fish fish=new Fish();
fish.walk();
}
}
运行结果

这篇博客介绍了接口与继承的概念,并通过实例展示了如何创建Animal类作为所有动物的抽象父类,包含legs属性和eat、walk方法。还详细讲解了pet接口,包括getName(), setName()和play()方法。接着,讨论了Spider类如何继承Animal类,Cat类如何实现Pet接口,以及Fish类如何重写walk方法并实现Pet接口。最后,提供了测试代码以验证这些类的功能。"
10162697,1289830,"ASP.NET 数据控件详解:Repeater, DataList, DataGrid
769

被折叠的 条评论
为什么被折叠?



