接口与继承 练习

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

学习资源:https://how2j.cn/k/interface-inheritance/interface-inheritance-practise/679.html

接口与继承 练习

UML图
UML-Unified Module Language
统一建模语言,可以很方便的用于描述类的属性,方法,以及类和类之间的关系
在这里插入图片描述
Animal

  1. 创建Animal类,它是所有动物的抽象父类。
  2. 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。
  3. 定义一个受保护的构造器,用来初始化legs属性。
  4. 声明抽象方法eat。
  5. 声明具体方法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(宠物)接口

  1. 提供getName() 返回该宠物的名字
  2. 提供setName(String name) 为该宠物命名
  3. 提供 play()方法
package pack5;

public interface pet {
    public String getName();
    public void setName(String name);
    public void play();
}

Spider

  1. Spider继承Animal类。
  2. 定义默认构造器,它调用父类构造器来指明所有蜘蛛都是8条腿。
  3. 实现eat方法
package pack5;


public class Spider extends Animal {
    Spider(){
        super(8);
    }
    public void eat(){
        System.out.println("Spider eat");
    }
}

Cat

  1. 该类必须包含String属性来存宠物的名字。
  2. 定义一个构造器,它使用String参数指定猫的名字;该构造器必须调用超类构造器来指明所有的猫都是四条腿。
  3. 另定义一个无参的构造器。该构造器调用前一个构造器(用this关键字)并传递一个空字符串作为参数
  4. 实现Pet接口方法。
  5. 实现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+测试代码

  1. 创建Fish类,它继承Animal类
  2. 重写Animal的walk方法以表明鱼不能走且没有腿。
  3. 实现Pet接口
  4. 无参构造方法
  5. 提供一个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();
    }
}

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值