接口:接口就是一组功能(能力/规范)
特点:
实现多态
解决了继承的单一继承的问题
接口是特殊的抽象类
接口和类是完全不同的机制,接口可以多继承,类不可以
接口没有构造方法
有抽象方法 可以有常量,完整限定符public static final
特性:接口不可以被实例化;
实现类必须实现接口的所有方法;
案例
- 定义Eatable接口,在接口中定义eat()方法,表示吃饭功能
- 定义FlyingDiscCatchable接口,在接口中定义catchingFlyDisc()方法,表示接飞盘功能
- 定义Swimmable接口,在接口中定义swim()方法,表示游泳功能
- 定义抽象类Pet,包括宠物名称(name),健康值(health)和与主人亲密度(love)属性,并提供抽象方法print(),用来输出宠物信息
- 定义狗类Dog,继承Pet类,实现Eatable和FlyingDiscCatchable接口,并重写或实现各个方法。
- 定义企鹅类Pengui,继承Pet类,实现Eatable和Swimmable接口,并重写或实现各个方法。
- 编写测试类,实现狗吃饭、企鹅游泳和狗玩接飞盘游戏的功能,并输出企鹅信息。
-
interface Eatable {
void eat();
}interface FlyingDiscCatchable {
void catchingFlyDisc();
}interface Swimmable {
void swim();
}abstract class Pet {
String name;
String health;
String love;public String getName() {
return name;
}public void setName(String name) {
this.name = name;
}public String getHealth() {
return health;
}public void setHealth(String health) {
this.health = health;
}public String getLove() {
return love;
}public void setLove(String love) {
this.love = love;
}abstract void print();
}class Dog extends Pet implements Eatable, Swimmable {
@Override
public void swim() {
// TODO Auto-generated method stub
System.out.println("狗游泳!");
}@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("狗吃饭!");
}@Override
void print() {
// TODO Auto-generated method stub
System.out.println("狗玩接飞盘!");
}}
class Pengui extends Pet implements Eatable, Swimmable {
@Override
public void swim() {
// TODO Auto-generated method stub
System.out.println("企鹅游泳!");
}@Override
public void eat() {
// TODO Auto-generated method stub}
@Override
void print() {
// TODO Auto-generated method stub
System.out.println("我是一只肥企鹅我叫" + this.name + "\t" + "健康值为" + this.health + "\t" + "与主人的亲密度为" + this.love);}
}
public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
dog.print();
Pengui pengui = new Pengui();
pengui.swim();
pengui.setName("大旭");
pengui.setHealth("100%");
pengui.setLove("100%");
pengui.print();}
}