Java之终止继承:Final类和Fianl方法
前言
关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能。
Final类
当关键字final用来修饰类时,其含义是该类不能再派生子类,换句话说,任何其他类都不能继承用final修饰的类,即使该类的访问权限为pubilc类型,也不能被继承;否则,将编译报错。
只有当需要确保类中的方法都不被重写时才应该建立最终(final)类,final关键字将会为这些方法提供安全,没有任何人能够重写final类中的方法,因为不能继承。
例:
package chapeter04;final class Father { }public class Sample3_13 extends Father
{public static void main(String[] args){}
}
报错:
可以看出,编译找不到Father类。
Final方法
当关键字final修饰方法后,该方法在子类中将无法重写,只能继承,例:
package chapeter04;class Father
{public final void show(){System.out.println("我是final方法,可以被继承,但是不能被重写");}
}class Son extends Father { }public class Sample4_15
{public static void main(String[] args) {// TODO Auto-generated method stubSon s= new Son();s.show();}}
运行结果:
可以看出,代码正常编译运行,final的方法show被成功继承。但是若图将final的方法在子类中重写,将会编译报错:
class Son extends Father
{public void show(){System.out.println("重写Final方法");}
}
可以看出final的方法不能被继承。
要恰当使用final方法,只有在子类覆盖某个方法会带来问题时,再将此方法设置为final方法,一般情况下不必使用。因为防止子类覆盖会丢失一些面向对象的优点,包括通过覆盖实现的可扩展性。
Java之终止继承:Final类和Fianl方法相关推荐
- java final类为什么不能继承_浅谈Java之终止继承:Final类和Fianl方法
前言 关键字Final不仅可以用来修饰变量,而且对类及其方法的继承也有很大的影响,本文将从类与方法两个方面介绍final关键字的功能. Final类 当关键字final用来修饰类时,其含义是该类不能再 ...
- Java中常见的final类
final为Java中常用的关键字,被final修饰的类不可被继承 下面列举几个Java包中的final类(): 1.java.lang包(列举所有final类) 包装类:Boolean,Charac ...
- Java中Date和Calender类的使用方法
查看文章 Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...
- java基础 通过继承Thread类和实现Runnable接口创建线程
java 创建线程 Java中,线程也是一种对象,但不是任何对象都可以成为线程. 只有实现了Runnable接口或继承了Thread类的对象才能成为线程. 继承Thread类 //格式: class ...
- [ 转载 ] Java基础10--关于Object类下所有方法的简单解析
关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...
- java bufferedread_java中关于bufferedreader类中read方法
java中关于bufferedreader类中read方法 关注:58 答案:2 mip版 解决时间 2021-01-14 05:40 提问者孤城古巷 2021-01-13 06:28 如下.此时 ...
- Java常见面试题—Object 类中的方法
Object 类中的方法 Object() 默认构造方法 clone() 创建并返回此对象的一个副本. equals(Object obj) 指示某个其他对象是否与此对象"相等". ...
- java mybatis enum_mybatis处理枚举类的简单方法
mybatis自带对枚举的处理类 org.apache.ibatis.type.EnumOrdinalTypeHandler :该类实现了枚举类型和Integer类型的相互转换. 但是给转换仅仅是将对 ...
- java outputstream flush_对OutputStream类的flush()方法的误解
在学习了<文件传输基础--Java IO流> 课程后,发现自己对flush()方法的调用有很多疑惑.在查询资料和自己看源码以及动手试验之后发现有以下几个特点.如有误也请大家指正出来,一切为 ...
最新文章
- 山西计算机软考知识点,计算机软考考试必备知识点:数据标准化
- [推荐] 创业者要留意优先清算权
- c++ 常见问题之string
- 2016/3/10 PHP (超文本预处理器) 是什么?
- 深入理解Kubelet核心执行框架
- Noj-589 --糖果
- 使用直线标定板进行相机畸变校正,并且进行9点标定(halcon)
- linux shell运行脚本命令行参数,shell脚本命令行参数简介
- 深入了解C++变量类型有哪些
- redhat 复制文件夹及子文件夹_Docker COPY 复制文件夹的诡异行为
- HDU 1021 Fibonacci Again
- yum 安装、 rpm安装、 源码编译安装
- 模仿人人网客户端应用源码
- 小程序转发二维码携带参数不生效的问题
- Linux 4.10中两个新特性与我的一段故事
- BUAA OO 第三单元 规格化设计
- 快速搞懂Lombok使用与原理
- 管理学总论之新古典管理理论和现代管理理论
- Symbian 进行最后一次系统升级,塞班时代结束
- android 8.0 一加5,一加5如何升级安卓8.0 一加5升级安卓8.0图文教程
热门文章
- 使用Gradle构建变体
- Flink Connectors之消费Kafka数据相关参数以及API说明
- Flink 系例 之 Connectors 连接 Kafka
- 解决问题:ORA-01846--周中的日无效
- 紫光展锐春藤8908A NB-IoT芯片获得德国电信全球认证
- 识别文字什么软件?这几个实用的文字识别软件值得收藏
- java 导出excel添加水印
- Xilinx FPGA 使用Microblaze实现串口命令行
- 计算机中国教育部排名,2019全国高校排行榜_全国高校专业排名哪家强 教育部发布权威榜单...
- yorc.json_天若ocr文字识别工具软件