272、Java基础48 - 接口与继承【练习】 2019.11.20

1、UML 图 —— 类之间的关系

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

2、解释UML-类图

在这里插入图片描述

3、解释UML-接口图

在这里插入图片描述

4、解释UML-继承关系

带箭头的实线,表示 Spider,Cat, Fish都继承于Animal这个父类.
特别注意: 模糊部分表示:此时不需要关注模糊的那部分内容。 请不要再发图片是模糊的纠正信息了,站长特意这么做的。。。

在这里插入图片描述

5、解释UML-实现关系

表示 Fish实现了 Pet这个接口
在这里插入图片描述

6、练习一:Animal类

  1. 创建Animal类,它是所有动物的抽象父类。
  2. 声明一个受保护的整数类型属性legs,它记录动物的腿的数目。
  3. 定义一个受保护的构造器,用来初始化legs属性。
  4. 声明抽象方法eat。
  5. 声明具体方法walk来打印动物是如何行走的(包括腿的数目)。
package charactor;

public abstract class Animal {

    protected int legs;
    protected Animal(int legs){
        this.legs = legs;
    }
    public abstract void eat();
    public void walk(){
        System.out.println(this.legs + "行走");
    }
    
}

7、练习二:Spider类

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

public abstract class Spider extends Animal{

    public Spider(int legs){ // 定义构造方法 Spider
        super(8); //调用父类的构造方法
    }
    public void eat(){
        System.out.println("吃蜘蛛");
    }
}

8、练习三:接口

根据UML类创建pet(宠物)接口

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

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

9、练习四:Cat类

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

public class Cat extends Animal implements Pet{

    String name;

    public Cat(String name){
        this.name = name;
        super(4);

    }
    public Cat(){
        this(null);
    }

    public void getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public void play(){
        System.out.println(this.name + "在玩耍");
    }
    public void eat(){
        System.out.println(this.name + "吃鱼");
    }
}

10、练习五:fish类

  1. 创建Fish类,它继承Animal类
  2. 重写Animal的walk方法以表明鱼不能走且没有腿。
  3. 实现Pet接口
  4. 无参构造方法
  5. 提供一个private 的name属性
package charactor;

public class Fish extends Animal implements Pet{

    private String name;

    @Override
    public void walk(){
        System.out.println("鱼不能走且没有腿");
    }

    public void getName(){
        return this.name;
    }
    public void setName(String name){
        this.name = name;
        System.out.println(this.name +"名称");
    }
    public void play(){
        System.out.println(this.name + "玩耍");
    }
     public Fish(){}

    @Override
    public void eat(){
        System.out.println("鱼要吃东西");
    }

}

11、练习的另外一种参考答案

******************************************************Animal********************************************************************************
package extendTest;
 
public class Cat extends Animal implements Pet{
    private static String name;
 
    public Cat(String name, int legs) {
        super(legs);
        this.name = name;
    }
    public  Cat(){
        this(name,legs);
     
    }
    public void eat() {
        System.out.println("猫吃鱼");
    }
     
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public void play(){
        System.out.println("玩球");
    }
     
    public static void main(String []args){
        Cat c = new Cat();
        c.setName("mimi");
        c.legs = 4;
         
        c.walk();
        System.out.printf(c.getName());
        c.play();
    }
}
**************************************************************Spider************************************************************************
package extendTest;
 
public class Spider extends Animal{
 
    public Spider(int legs){
        super(legs);
    }
     
    public void eat(){
        System.out.println("我不知道蜘蛛怎么吃饭。。");
    }
    public static void main(String[] args){
        Spider s = new Spider(8);
        s.walk();
    }
}
**************************************************************Pet************************************************************************
package extendTest;
 
public interface Pet {
    public String getName();
    public void setName(String name);
    public void play();
}
 
**************************************************************Cat************************************************************************
package extendTest;
 
public class Cat extends Animal implements Pet{
    private static String name;
 
    public Cat(String name, int legs) {
        super(legs);
        this.name = name;
    }
    public  Cat(){
        this(name,legs);
     
    }
    public void eat() {
        System.out.println("猫吃鱼");
    }
     
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public void play(){
        System.out.println("玩球");
    }
     
    public static void main(String []args){
        Cat c = new Cat();
        c.setName("mimi");
        c.legs = 4;
         
        c.walk();
        System.out.printf(c.getName());
        c.play();
    }
}
 
**************************************************************Fish************************************************************************
package extendTest;
 
public class Fish extends Animal implements Pet{
    private String name;
    static int weiba;
     
    public Fish(int legs,int weiba){
        super(legs);
        this.weiba = weiba;
    }
     
    public Fish(){
        this(legs,weiba);
    }
    public void walk(){
        System.out.println(name + "没有脚,用尾巴游");
    }
 
    @Override
    public void eat() {
        // TODO Auto-generated method stub
        System.out.println(name + "吃虾米");
         
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public void play(){
        System.out.println("玩海草");
    }
     
    public static void main(String [] args){
        Fish fish = new Fish();
        fish.setName("咕噜噜");
        fish.walk();
        fish.eat();
         
        System.out.printf(fish.getName());
        fish.play();
    }
}

12、参考链接

[01] How2j - 接口与继承系列教材 (十二)- 综合练习

发布了309 篇原创文章 · 获赞 229 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/youyouwuxin1234/article/details/103162284