abstract class VS interface
关于抽象类 abstract class:
1. 抽象方法必须在抽象类中
2. 抽象类和抽象方法要用abstract 关键字修饰
3. 不可以用new 来实例化一个abstract类,因为调用抽象方法没有意义
4. 抽象类中的方法要被使用,必须由子类实现了父类中的所有抽象方法后,建立子类的对象才能调用;
如果子类中只覆盖了部分抽象方法,那么这个子类也是一个抽象类。
抽象类和一般类的区别只有一点: 有一些功能不是很清楚,只知道这个功能需要明确出现,但是该类无法定义主体,需要子类去实现。通过抽象方法来处理。
抽象类比一般类多了抽象方法;抽象类不可以被实例化;(抽象类中也可以不定义抽象方法,只用来防止实例化)
模板方法设计模式: 在定义功能时,功能的一部分是确定的,但是有一部分功能是不确定的,而确定的部分在使用不确定的部分。这时,我们可以把不确定的功能暴露出去,由该类的子类去完成。不一定是抽象类和抽象方法哦,只是可以被子类覆盖。
接口interface:
当抽象类中的所有方法都是抽象的时候,可以将这个类定义为接口。
接口的定义格式:
1. 接口中定义: 常量和抽象方法
常量: public static final
抽象方法: public abstract
小结: 接口中的成员都是固定格式的,即 默认的也是上面的那种定义格式。
2. 继承接口的类要用关键字 implements
3. 接口是不可以创建对象的,因为有抽象方法。需要子类对接口中的抽象方法全部实现后才能实例化子类对象。如果有些抽象方法没有实现,则子类是一个抽象类。
4. 接口支持多实现,因为接口中没有方法实体,只需要子类定义就可以了,一个类在继承一个类的同时还可以实现多个接口。
5. java 所支持的多继承, 只是在接口与接口之间,接口之间存在多继承。类的多实现也可以实现多继承。
接口的特点:
1. 接口是对外暴露的规则
2. 接口是程序的功能扩展
3. 接口可以用来多实现
4. 类与接口之间是实现的关系,而且类在继承一个类的同事可以同时实现多个接口
5. 接口与接口之间可以有继承关系
在项目使用中,继承表示 is a的关系,而实现接口则表示 like a 的意思。 可以形象的把继承的那个叫做主业,而实现的接口是那个类的副业。
abstract class VS interface的更多相关文章
- Java abstract class 和 interface 的区别
Java abstract class 和 interface 的区别 1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概 ...
- 深入理解abstract class和interface(转)
原文地址 深入理解abstract class和interface java提高篇(四)-----抽象类与接口
- abstract class和interface 知多少!!!
1.相同点 A. 两者都是抽象类,都不能实例化. B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法. 2. 不同点 A. interface需 ...
- 解决:mvn archetype:create Abstract class or interface 'org.apache.maven.artifact.repository.ArtifactRepository' cannot be instantiated
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:2 .3:create (default- ...
- 11)Java abstract class 和 interface
abstract class 和 interface 的区别 含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象.含有abstract方法的类必须定义 ...
- 在.NET 应用程序设计中如何选择Class, Abstract Class and Interface
关键字: Type– 类型 Class - 类 Abstract - 抽象的 Interface - 接口 Member - 成员 Method - 方法 Property - 属性 预备知识:在阅读 ...
- abstract class与interface的区别与联系
1.相同点:A. 两者都是抽象类,都不能实例化.B. interface实现类及abstract class的子类都必须要实现已经声明的抽象方法. 2. 不同点:A. interface需要实现,要用 ...
- 【转载】java abstract class和interface的区别
转载:https://blog.csdn.net/b271737818/article/details/3950245 在Java语言中,abstract class和interface是支持抽象类定 ...
- 深入理解abstract class和interface
摘自:http://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/ (如有侵权,请留言,版主将立即删除) abstract c ...
- 关于abstract class 和 interface
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系.但是,一个类却可以实现多个interface. 2.在abstract class 中可以有自己 ...
随机推荐
- CC2640蓝牙芯片开发备记
server ,characteristic UUID ,handle sever ,一个工程里可以有多个服务,按键服务,心率计服务,马达服务. characteristic , 一个服务可以有多个的 ...
- 微信小程序scroll-view滚动一次多次触发的问题解决方案
最近使用微信小程序开发的时候,需要用scroll-view的bindscrolltolower事件,控制加载下一页的内容.但是发现在ios里,下拉滚动一次,事件触发两次,导致重复加载数据. 经过百度和 ...
- shell编程规范
1 脚本名以.sh结尾,名称尽量见名之意,比如ClearLog.sh Clear_Log.sh clearlog.sh SerRestart.sh Ser_Restart.sh;2 尽量使用UTF-8 ...
- JavaScript中常用的BOM对象(属性、方法)
window对象 定义: 一个浏览器窗口实例 与窗口有关的信息(应用程序编程接口) ECMAScript规定的Global对象 方法 open(url),返回标识符 引用 即将打开窗口的.(调用该引用 ...
- C语言权威指南和书单 - 初学者
注:点击标题免费下载电子书 1. C Primer Plus (5th Edition) 2. A Book on C C Programming: A Modern Approach (2nd Ed ...
- 初学io
IO流: 01.File 创建文件 //创建文件夹 private static void mkdirs() { System.out.println("请您输入创建的文件夹名称:(默认是E ...
- linux中的baff/cache占用大量内存,如何清理?
执行命令echo 3 > /proc/sys/vm/drop_caches,即可清空buff/cache 参考http://blog.csdn.net/kevins_lee/article/de ...
- HDU - 6203:ping ping ping (DFS序 贪心)
pro:给定N+1个点的树,有M对关键点,现在让你破坏最少的点,使得M对关键点不连通. sol:贪心,我们把M对点按照LCA深度排序,每次破坏LCA. 如果一对点(u,v,lca),u-lca-v有点 ...
- JMeter在linux服务器上使用
环境部署: 1.在Linux服务器先安装jdk:此步骤省略,可参考百度经验:https://jingyan.baidu.com/article/6b18230980c294ba59e15967.htm ...
- post表单翻页保存搜索条件
问题:搜索条件下的数据,进行翻页行为后,搜索条件丢失 1.搜索表单 2.翻页 解决:既然点击页面跳转的a标签使用的方法是GET,而点击“搜索”按钮使用的方法是POST,那么可以让点击a标签实际上就是提 ...