一、前言 在 Java 中,实现 抽象的机制有 2 种:抽象类(abstract class)和接口(Interface)。 抽象是什么? 二、抽象类(abstract class) 1. 示意图 2. 栗子 // 定义1抽象动物类Animal,提供抽象
一、前言
在 Java 中,实现 抽象的机制有 2 种:抽象类(abstract class)和接口(Interface)。
抽象是什么?
二、抽象类(abstract class)
1. 示意图
2. 栗子
public abstract class Animal {
public abstract void cry();
}
// 猫、狗 = 动物类的子类
// 由于cry()为抽象方法,所以Cat、Dog必须要实现cry()
public class Cat extends Animal{
public void cry() {
System.out.println("猫叫:喵喵...");
}
}
public class Dog extends Animal{
public void cry() {
System.out.println("狗叫:汪汪...");
}
}
// 测试
public class Test {
public static void main(String[] args) {
Animal a1 = new Cat();
Animal a2 = new Dog();
a1.cry();
a2.cry();
}
}
// 运行结果
猫叫:喵喵...
狗叫:汪汪...
三、接口(Interface)
1. 示意图
2. 栗子
interface Demo{void method1();
void method2();
}
class Test implements Demo{
void method1();
void method2();
}
四、区别
五、实例
1. 需求
a:有1类门,其本质功能 = 开门 & 关门 需求
b:为上述这类门增加1个报警器,可进行报警
2. 实现
// 方案1:只使用抽象类abstract class Door{
abstract void open();
abstract void close();
abstract void alarm();
}
// 具体使用时
class AlarmDoor extends Door {
void open(){}
void close(){}
void alarm(){}
}
// 方案2:只使用接口
interface Door{
void open();
void close();
void alarm();
}
// 具体使用时
class AlarmDoor implements Door {
void open(){}
void close(){}
void alarm(){}
}
// 方案3:同时使用抽象类 & 接口
// 对于需求1 = 抽象1类事物,即 使用抽象类
abstract class Door{
abstract void open();
abstract void close();
}
// 对于需求2 = 抽象事物中的某个行为, 即 使用 接口
interface Alarm{
void alarm();
}
// 具体使用时
class AlarmDoor extends Door implements Alarm{
void open(){}
void close(){}
void alarm(){}
}