第二章第六天接口

  1. 接口的概述

接口:接口就是一组功能(能力/规范)

特点:

  1. 实现多态
  2. 解决了继承的单一继承的问题。

注意事项:

  1. 多组合,帮助程序功能与功能之间解耦,程序的扩展性好、维护性好
  2. 接口侧重能力,忽略实现细节

面向接口编程,一个接口可以同时继承多个接口

 

例一、

  1. 对贯穿本书的案例电子宠物系统的类结构进行重构,要求如下:
  • 定义Eatable接口,在接口中定义eat()方法,表示吃饭功能
  • 定义FlyingDiscCatchable接口,在接口中定义catchingFlyDisc()方法,表示接飞盘功能
  • 定义Swimmable接口,在接口中定义swim()方法,表示游泳功能
  • 定义抽象类Pet,包括宠物名称(name),健康值(health)和与主人亲密度(love)属性,并提供抽象方法print(),用来输出宠物信息
  • 定义狗类Dog,继承Pet类,实现Eatable和FlyingDiscCatchable接口,并重写或实现各个方法。
  • 定义企鹅类Pengui,继承Pet类,实现Eatable和Swimmable接口,并重写或实现各个方法。
  • 编写测试类,实现狗吃饭、企鹅游泳和狗玩接飞盘游戏的功能,并输出企鹅信息。
package day9.demo8;

/**
 * 宠物
 */
public abstract class Pet {
    private String name;//宠物名称
    private int health;//健康值
    private int love;//亲密度

    public Pet(String name, int health, int love) {
        this.name = name;
        this.health = health;
        this.love = love;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getHealth() {
        return health;
    }

    public void setHealth(int health) {
        this.health = health;
    }

    public int getLove() {
        return love;
    }

    public void setLove(int love) {
        this.love = love;
    }

    public  void print(){
        System.out.println("宠物的自白:" + "\n我的名字叫" + this.getName() + ",我的健康值是" + this.getHealth() + ",我和主人的亲密度是" + this.getLove() + "。");
    }
}
package day9.demo8;

/**
 * 接飞盘功能
 */
public interface FlyingDiscCatchable {
    void catchingFlyDisc();
}
package day9.demo8;

/**
 * 食物吃饭功能
 */
public interface Eatable {
    void eat();
}
package day9.demo8;

/**
 * 游泳
 */
public interface Swimmable {
    void swim();
}
package day9.demo8;

/**
 * 狗
 */
public class Dog extends Pet implements Eatable,FlyingDiscCatchable{
    public Dog(String name, int health, int love) {
        super(name, health, love);
    }

    @Override
    public void eat() {
        System.out.println("狗狗"+this.getName()+"吃饱了!");
    }

    @Override
    public void catchingFlyDisc() {
        System.out.println("狗狗叼飞碟");
    }
}
package day9.demo8;

/**
 * 企鹅
 */
public class Pengui extends Pet implements Eatable,Swimmable{
    public Pengui(String name, int health, int love) {
        super(name, health, love);
    }

    @Override
    public void eat() {
        System.out.println("企鹅"+this.getName()+"吃饱了!");
    }

    @Override
    public void swim() {
        System.out.println("企鹅在南极游泳");
    }
}
package day9.demo8;

public class Test {
    public static void main(String[] args) {
        Dog dog=new Dog("无名氏",80,20);
        dog.print();
        dog.eat();
        dog.catchingFlyDisc();

        System.out.println();

        Pengui pengui=new Pengui("小白",100,50);
        pengui.print();
        pengui.eat();
        pengui.swim();
    }
}

 

你可能感兴趣的:(第二章第六天接口)