当前位置 : 主页 > 编程语言 > java >

【Java -- 基础】抽象类(Abstract) & 接口(Interface)的区别

来源:互联网 收集:自由互联 发布时间:2022-06-22
一、前言 在 Java 中,实现 抽象的机制有 2 种:抽象类(abstract class)和接口(Interface)。 抽象是什么? 二、抽象类(abstract class) 1. 示意图 2. 栗子 // 定义1抽象动物类Animal,提供抽象

一、前言

在 Java 中,实现 抽象的机制有 2 种:抽象类(abstract class)和接口(Interface)。

抽象是什么?
【Java -- 基础】抽象类(Abstract) & 接口(Interface)的区别_java

二、抽象类(abstract class)

1. 示意图
【Java -- 基础】抽象类(Abstract) & 接口(Interface)的区别_抽象类_02
2. 栗子

// 定义1抽象动物类Animal,提供抽象方法 = cry()
public abstract class Animal {
public abstract void cry();
}

// 猫、狗 = 动物类的子类
// 由于cry()为抽象方法,所以Cat、Dog必须要实现cry()
public class Cat extends Animal{

@Override
public void cry() {
System.out.println("猫叫:喵喵...");
}
}

public class Dog extends Animal{

@Override
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. 示意图
【Java -- 基础】抽象类(Abstract) & 接口(Interface)的区别_java_03

2. 栗子

interface Demo{
void method1();
void method2();
}

class Test implements Demo{
void method1();
void method2();
}

四、区别

【Java -- 基础】抽象类(Abstract) & 接口(Interface)的区别_接口_04

五、实例

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(){}
}


上一篇:【Android 自定义 View】-->进度条合集
下一篇:没有了
网友评论