JAVA中的抽象类与接口
JAVA中的抽象类与接口
接口和抽象类的区别:
接口和抽象类是支持抽象类定义的两种机制。
接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。
抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类,被声明为抽象的方法不能包含方法体。子类实现方法必须含有相同的或者更低的访问级别(public->protected->private)。抽象类的子类为父类中所有抽象方法的具体实现,否则也是抽象类。
接口可以被看作是抽象类的变体,接口中所有的方法都是抽象的,可以通过接口来间接的实现多重继承。接口中的成员变量都是static final类型,由于抽象类可以包含部分方法的实现,所以,在一些场合下抽象类比接口更有优势。
相同点:
(1)都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
不同点:
(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
(3)接口强调特定功能的实现,而抽象类强调所属关系。
(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
(5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。
JAVA中的抽象类与接口相关推荐
- Java 中的抽象类和接口
Java 中的抽象类和接口 1.参考资料 深入理解Java的接口和抽象类 Java抽象类与接口的区别 2.前言 有一次旁听面试的时候,听到面试官问了一句:既然 JDK8 中接口有了默认方法实现,那接口 ...
- 深入理解Java中的抽象类和接口
对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候会以为它们可以随意互换使用, ...
- Java中的抽象类和接口(interface),abstract关键字的用法
目录 抽象类 接口 抽象类 Java是一个面向对象的语言,因此类可以说是根基一般的存在,所有的方法/变量/语句都必须依附一个类才能存在,有时我们为了对一个类进行拓展,会选择继承这个类,在子类中对父类进 ...
- java中的抽象类和接口可以实例化吗?,它们可以有构造方法吗?(扩展:接口和抽象类的区别)
结论1:不可以实例化: 解释: 我们这里讨论的实例化是 抽象类类名 抽象类对象名 = new 抽象类类名(参数可能有可能无) 这种形式. 抽象方法不能有方法体!你说它们实例化了有啥意义. 结论2:接口 ...
- 辨异 —— Java 中的抽象类和接口
接口优于抽象类.-- <Effective Java>(Item 18) 0. 语法区别 抽象类允许给出某些方法的实现,接口不允许: 为了实现由抽象类定义的类型(type),类必须成为抽象 ...
- Java中的抽象类和接口
目录 什么是抽象类 抽象类再实现多态中的意义 接口是什么 各位铁汁们大家好呀
- 让我们深度理解Java中的抽象类与接口
- java饲养员喂动物_做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处...
做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处 interface Animal{ //动物的接口 public void eat(Food food); // ...
- java笔记之抽象类和接口
前言 java笔记之抽象类和接口是开发人员的设计工具 正文 1.抽象类 客观存在的一类事物,当这类事物都是抽象的,无法具体的描述. 1)语法: 修饰符 abstract class 类名{ } 2)特 ...
最新文章
- ESX 3.5 与License Server不定时失去连接解决方法一例
- 946. 验证栈序列
- gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化
- python的表达式范围怎么写_python表达式
- [dhtmlx]group task 失效问题解决
- 虚拟机linux下git clone 报SSL connect error错误
- 局域网内window10和Windows7共享只有USB接口打印机的方法——以sharp2048D为例子
- 【材料】ABS、ABS+PC、PA、PC、PMMA、POM、PP、PE、PPO、PVC、TPE和TPO材料优缺点
- python查看qq撤回消息_QQ坦白说里匿名叫我还想逃?Python轻松查看匿名用户信息...
- css中border属性设置
- C# 添加windows右键菜单
- 将pdf转成图片时,文字没法显示
- wifi信号正常,电脑插入网线之后,却显示“未识别网络”,
- 举头望明月打计算机术语,关于月亮的谜语
- 运动装备什么牌子好?运动装备品牌排行榜推荐
- Qt QAxObject操作excel文件过程总结
- uCLinux的编译
- poi 读取word 遍历表格和单元格中的图片
- 计算机管理用户和组无法访问,用户和组管理权限及文件访问控制
- python中plt.imshow()不显示图片