Java:详解 抽象类(abstract class) &
2016-04-06 本文已影响5578人
Carson带你学安卓
前言
- 在
Java
中,实现 抽象的机制有2种:抽象类(abstract class
)和接口(Interface
) - 二者非常类似,甚至可相互替换,因此很多开发者开发时对于二者的选择十分随意。其实,2者之间存在很大区别
- 本文将对抽象类(
abstract class
)、接口(Interface
) & 之间的区别 进行详细 讲解剖析
目录
示意图1. 知识储备:抽象是什么?
示意图下面,将主要讲解Java
中抽象的2种实现方式:抽象类(abstract class
)和接口(Interface
)
2. 抽象类(abstract class)
- 简介如下
- 示例
// 定义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();
}
}
// 运行结果
猫叫:喵喵...
狗叫:汪汪...
3. 接口(Interface)
- 介绍如下
- 示例
interface Demo{
void method1();
void method2();
}
class Test implements Demo{
void method1();
void method2();
}
4. 二者的区别
示意图5. 实例讲解
下面给出1个简单的例子,让大家更好地去理解二者的区别 & 应用场景
5.1 需求描述
- 需求1:有1类门,其本质功能 = 开门 & 关门
- 需求2:为上述这类门增加1个报警器,可进行报警
5.2 需求实现
- 该需求的实现方案有3种,均可完成需求:
1=只使用抽象类、2=只使用接口、3=同时使用抽象类 & 接口
- 具体请看如下:
// 方案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(){}
}
- 虽然3种实现方式均可完成需求,可是,明显使用方案3 更加符合 抽象类 & 接口的使用
6. 总结
-
本文主要对 抽象类(
abstract class
)、接口(Interface
)进行了全面总结 -
下面我将继续对
Android & Java
中的知识进行深入讲解 ,有兴趣可以继续关注Carson_Ho的安卓开发笔记
请点赞!因为你的鼓励是我写作的最大动力!
相关文章阅读
Android开发:最全面、最易懂的Android屏幕适配解决方案
Android事件分发机制详解:史上最全面、最易懂
Android开发:史上最全的Android消息推送解决方案
Android开发:最全面、最易懂的Webview详解
Android开发:JSON简介及最全面解析方法!
Android四大组件:Service服务史上最全面解析
Android四大组件:BroadcastReceiver史上最全面解析
欢迎关注Carson_Ho的简书!
不定期分享关于安卓开发的干货,追求短、平、快,但却不缺深度。