接口和抽象类
来源:互联网 发布:恒大淘宝内部组织架构 编辑:程序博客网 时间:2024/05/21 10:26
接口是服务提供者(服务器)和服务的用户(客户端)之间的一个协议。有时候服务器定义协议,有时候则是客户端定义协议。
接口既可以定义域也可以定义方法,但是接口中的方法没有实现。要想让他发挥作用,接口必须得有真正执行这个动作的实现类。
就像类一样,接口也有public或者缺省访问级别。接口可以有域和方法,不过所有的接口都是隐式公开的。
package app09;public interface Printable { void print(Object o); //接口中的方法没有主体,会被分号直接中止。}
就像类一样,接口也是创建对象的模板。但是和普通的类不一样的是接口不能被实例化,他只是定义了Java类可以实现的一组方法。
package app09;public class CanonDriver implements Printable { public void print(Object obj) { // code that does the printing }}
实现类必须覆盖接口中的所有方法。接口和他的实现类之间的关系可以比作父类和子类的关系,实现类的实例也是接口的实例。
接口支持继承,一个接口可以扩展另一个接口。
有了接口就必须编写执行实际动作的实现类。如果接口中有许多方法,可能会浪费时间去覆盖用不到的方法。抽象类的作用和接口类似,但是抽象类同时还能提供部分实现。必须要显式覆盖的方法可以声明为abstract。不过仍需要创建实现类,因为抽象类不能被实例化,但无需覆盖不想使用或者不想修改的方法。
通过在类声明中使用abstract修饰符来创建抽象类,可以在方法声明之前使用abstract修饰符来创建抽象方法。
package app09;public abstract class DefaultPrinter { public String toString() { return "Use this to print documents."; } public abstract void print(Object document);}
toString方法有一个实现,这样就不需要在实现类中覆盖这个方法了,除非你想改变他的返回值。print方法声明为abstract,没有主体。
package app09;public class MyPrinter extends DefaultPrinter { public void print(Object document) { System.out.println("Printing document"); //some code here }}
像MyPrinter这样的具体实现类必须覆盖所有的抽象类,否则它自己必须声明为abstract。
将一个类声明为abstract就是告诉类的用户,你想让他们扩展这个类,即使某个类没有抽象的方法,但仍可以将其声明为abstract。
0 0
- 抽象接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 抽象类和接口
- 接口和抽象类
- 抽象类和接口
- 接口和抽象类
- 【设计模式】策略模式
- 08:字符三角形
- Wpf ScrollViewer 右键菜单禁用
- C/C++ 引用,赋值,指针之间的区别
- NSIS知识技巧
- 接口和抽象类
- H.264格式分析
- 回车键替换Tab键完成循环索引功能。
- Android 中 selector 选择器的使用
- Spring IOC和AOP 原理彻底搞懂
- windows7电脑远程连接问题
- 不谈DSSD,谈谈Xyrate和希捷
- Android问题—SDK更新不了问题解决
- MQTT---HiveMQ源码详解(一)概览