Java中抽象类和接口的配合使用
来源:互联网 发布:航空公司订票系统java 编辑:程序博客网 时间:2024/05/24 07:09
- 抽象类
用abstract定义,用于抽象出一类物品的公共属性和方法,方法可提供默认的实现。如动物类、车类等等。显然意见,抽象类定义的初衷是为了继承。
子类可以通过extends关键字实现类的继承,与C++不同,Java不能多继承,即:一个类只能有一个父类,所以某些特殊方法就尽量不要放在抽象类中。如动物类(Animal)的捕猎方法(catch)等。 - 接口类
可以认为是一系列方法的集合,类可以通过implements实现接口,在Java中一个类可以实现多个接口。 - 典型应用
我们为门定义一个抽象类Door,并定义抽象方法open和close。现在需定义一个告警门的类AlarmDoor,该门有告警功能(alarm方法)。 AlarmDoor本质上是Door,但同时它也拥有报警的行为功能。此时我们将此应用场合采用如下代码定义,可优雅的实现我们的意图。
abstract class Door{ abstract void open(); abstract void close(); } interface Alarm{ void alarm(); } class AlarmDoor extends Door implements Alarm{ void open(){} void close(){} void alarm(){} }
- 应用接口实现回调
假设有下面一个应用场景:有一个农夫,他每天要给牛喂草,牛吃草后产奶给农夫。我们先定义奶牛类Cow,该类中有一个吃草方法(eat),在eat方法中需给农夫增加牛奶(简便起见,吃一个草加一个牛奶)。此时我们在Cow类中定义一个接口,并在类的构造函数中传入接口。然后在eat中调用该接口,实现牛奶的增加。
农夫类Farmer实现增加牛奶接口(IFMilk),并实现接口的方法addMilk。农夫的喂牛方法Feed中,定义Cow对象,并传入this作为IFMilk接口的实例,成功实现回调。
public class Cow{ public Cow(IF_Milk iMilk) { mIFMilk = iMilk; } private IF_Milk mIFMilk; public interface IF_Milk { void addMilk(int n); } public void eat(int nGrass) { mIFMilk.addMilk(nGrass); }}public class Farmer implements Cow.IF_Milk{ public int myMilk = 0; protected void Feed(int nGrass) { Cow c = new Cow(this); c.eat(nGrass); } public void addMilk(int n) { myMilk += n; }}
阅读全文
0 0
- Java中抽象类和接口的配合使用
- java中抽象类和接口的使用区别
- java中抽象类和抽象接口的区别
- 【JAVA】Java中抽象类和接口的区别
- java中接口和抽象类的区别和介绍
- Java中抽象类和接口的用法和区别
- Java中抽象类和接口的用法和区别
- Java中抽象类和接口的用法和区别
- Java 接口和抽象类的区别和使用
- java 抽象类和接口和多态的使用
- Java中接口和抽象类的区别及使用的场合
- Java中接口和抽象类的区别及使用的场合
- Java中接口和抽象类的区别及使用的场合
- Java中接口和抽象类的区别及使用的场合
- Java中抽象类和接口的区别及使用场景
- C#中抽象类和接口的区别与使用
- C#中抽象类和接口的区别与使用
- C#中抽象类和接口的区别与使用
- python3机器学习——sklearn0.19.1版本——数据处理(二)(多项式、pipeline、分类模型评价标准)
- WebApi 的Action跳不进去
- 基于cyptopp库的rsa加解密详解
- 矩阵中的路径
- 10.2 数字与静态
- Java中抽象类和接口的配合使用
- angular @input @output
- 新建MAVEN项目--pom.xml报错
- SQL基础教程学习(二)开始学习SQL语句
- 在VS平台下使用JAI_SDK库1———— 配置工程包含路径
- 动漫插画培训班选择注意事项
- socket 和 webservice 的区别和比较
- Android数据库两种操作方式介绍: SQLite与ORMLite
- linux通过端口号(进程号pid)查找程序执行路径