java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗
一、简单总结,需要重写的有
普通类继承抽象类,重写所有抽象类方法
;(不包括普通方法)
普通类继承接口,重写所有接口方法
。(不包括default关键字修饰的方法)
详解见下:
- 普通类继承,并非一定要重写父类方法。
- 抽象类继承,
如果子类也是一个抽象类,并不要求一定重写父类方法。如果子类不是抽象类,则要求子类一定要实现父类中的抽象方法
。- 接口类继承。
如果是一个子接口,可以扩展父接口的方法;如果是一个子抽象类,可以部分或全部实现父接口的方法;如果子类不是抽象类,则要求子类一定要实现父接口中定义的所有方法。
二,回顾抽象类接口
抽象类定义
抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。
抽象类特点
1)抽象类不能实例化。
2)抽象类可以包含抽象方法和抽象访问器。
3)不能用 sealed 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。 采用 sealed 修饰符的类无法继承,而 abstract 修饰符要求对类进行继承。
4)从抽象类派生的非抽象类必须包括继承的所有抽象方法和抽象访问器的实际实现。
- 与具体类的比较
1)抽象类不能直接实例化,并且对抽象类使用 new 运算符会导致编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。
2)允许(但不要求)抽象类包含抽象成员。
3)抽象类不能被密封。
4、与接口的比较
- 1)相同点
- a、不能实例化;
- b、包含未实现的方法声明;
- c、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)
- 2)不同点
a、类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
b、抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。
c、抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。
d、抽象类是对象的抽象,然而接口是一种行为规范。
文章转自
java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗相关推荐
- 关于类、抽象类和接口的继承关系
关于类.抽象类和接口的继承关系 Java类的继承是单继承的,就是一个类只能继承一个类,但是可以通过接口来实现多继承,一个类可以实现多个接口.通过这种方式,Java类就可以实现多继承的关系.但是在继承类 ...
- java类、抽象类、接口的继承规则
一个接口可以继承多个接口. interface C extends A, B {}是可以的.一个类可以实现多个接口: class D implements A,B,C{}但是一个类只能继承一个类,不能 ...
- Java声明定义抽象类_接口_继承_实现
文章目录 声明定义抽象类 声明定义接口 派生类.抽象类.接口的继承要点 声明定义抽象类 public abstract class CRMSystem {public abstract Client ...
- Java常用知识点汇总(基础:数组,类与对象,接口与继承)
目录 数组 1.引用 2.增强型for循环 3.复制数组 arraycopy() 4.针对数组的工具类 Arrays 5.选择法排序 6.冒泡排序 7.练习-二维数组中的查找(剑指offer) 类与对 ...
- c++虚继承和虚函数和抽象类、接口类,聚合类
虚继承 虚继承用于解决多继承条件下的菱形继承问题(浪费存储空间.存在二义性). 底层实现原理与编译器相关,一般通过虚基类指针和虚基类表实现,每个虚继承的子类都有一个虚基类指针(占用一个指针的存储空间, ...
- java第二个案例:运动员和教练(巩固理解抽象类和接口、继承等知识点)
一.题目 我们现在有乒乓球运动员和篮球运动员,乒乓球教练和篮球教练,为了出国交流,跟乒乓球相关的人员都要学习英语,用代码实现.思考有哪些具体类.哪些抽象类.哪些接口. 二.思路 从具体到抽象分析,先从 ...
- JAVA抽象类和接口类的区别
JAVA抽象类和接口类的区别 1.声明方式不同.抽象类为abstract class,接口类为interface. 2.继承抽象类关键字为extends,实现接口关键字为implements. 3.继 ...
- 类、抽象类、接口之间的区别
目录 1.类与抽象类的异同之处 (1)类和抽象类的区别 (2)类和抽象类的相同之处 2.接口与类的异同之处 (1)接口与类相似点 (2)接口与类的区别 (3)接口特性 3.抽象类和接口的区别 1.类与 ...
- Java面向对象(3) —— 抽象类、接口、内部类、匿名内部类
目录 抽象类(abstract) 抽象类的使用方法 抽象类的应用:模板方法模式 接口 接口的概念 接口的特点 接口的使用 接口实现与抽象类继承的区别 接口的多继承 内部类 概念 成员内部类(使用较多) ...
最新文章
- websphere内存溢出
- sqlserver数据库中清空日志文件
- mysql复制安全性_从MySQL复制功能中得到一举三得实惠
- linux服务器常用维护命令,Linux服务器维护常用命令
- mysql 提交修改_MySQL客户端、服务器端工具、sql_mode、存储引擎修改、事务的提交和回滚、隔离级别...
- Exchange2010 owa 访问 http 500 内部服务器错误
- 《Docker技术入门与实战》——3.5 创建镜像
- vue中使用阿里矢量库彩色图标办法
- dedecms分页样式修改 内容页 上一页 下一页
- 软件课程设计--仓库管理系统
- Unexpected EOF read on the socket
- 元旦给计算机老师发贺词,给老师的元旦祝福语
- 金融分析与风险管理——期权BSM模型
- isSelected() 的使用
- html大一期末考试,2017年大学英语大一期末考试试题及答案
- Qgis的下载安装(Qgis3.16.12)
- html格式显示图标异常,HTM或HTML图标变成无法显示和识别的解决方法大全
- C语言输出汉字版乘法口诀表,C语言实现打印乘法口诀表
- 谷歌翻译无法使用/翻译页面无法使用/右键翻译成中文无法使用问题解决方法。
- 将uchar转换为Mat并显示出来