final简介
final简介
final用来修饰方法和属性表示特殊的意义。修饰方法时表示方法不能被重写;修饰属性时表示属性不能被改变,这里属性又分为对象和基本类型,修饰基本类型表示基本类型赋值以后不能再被赋值,修饰对象表示这个属性不能再指向其他对象(引用不变),但是他指向的这个对象本身还是可以被改变的。
既然final方法不可重写,那下面这段程序是否有错呢?
class Base {
private final void method() {
System.out.println("In Base...");
}
}
class Sub extends Base {
public void method() {
System.out.println("In Sub...");
}
}
答案: 正确的。
使用final关键字可以声明类、成员变量和成员方法,一经声明,便不可继承、不可修改和不能覆盖。
本例中,基类方法 是private ,他在子类中是不可见的,故子类中的 同名方法 不再是覆盖,相当于一个新的方法名。
这种情况比较特殊,书上说 如果子类中的一个方法与它超类中的方法有相同的方法名和参数签名,称子类中的方法覆盖(override)超类中的方法。 这种说法是不严密的。
额外小知识:
final方法不能被子类覆盖。编译器在调用final方法时会转入内嵌机制(直接将方法主体插入到调用处),大大提高执行效率(50%左右)。API类中的许多方法,如Object类中的getClass方法为final方法。
注:final不能用于修饰构造方法。
参考资料:
http://www.cnblogs.com/hasse/p/5015475.html
final简介的更多相关文章
- 详解Java中的final关键字
本文原文地址:https://jiang-hao.com/articles/2019/coding-java-final-keyword.html1 final 简介2 final关键字可用于多个场景 ...
- Java基础知识笔记(一:修饰词、向量、哈希表)
一.Java语言的特点(养成经常查看Java在线帮助文档的习惯) (1)简单性:Java语言是在C和C++计算机语言的基础上进行简化和改进的一种新型计算机语言.它去掉了C和C++最难正确应用的指针和最 ...
- Java — 面向对象
目录 一.类和对象 二.方法 三.封装 四.继承 五.多态 六.final 七.static 八.抽象类 九.接口 十.内部类 一.类和对象 简介:类是对事物的一种描述,对象则为具体存在的事物. 类的 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.4 LHS简介&Pattern
LHS简介 在规则文件组成章节,我们已经了解了LHS的基本使用说明.LHS是规则条件部分的统称,由0个或多个条件元素组成.前面我们已经提到,如果没有条件元素那么默认就是true. 没有条件元素,官方示 ...
- JAVA学习笔记--简介几个常见关键字static、final、this、super
一.static static(静态的),可以放在类.方法.字段之前. 通常,当创建类时,就是在描述那个类的外观与行为.除非用 new 创建那个类的对象,否则,实际上并未获得任何对象.执行 new 来 ...
- 《Drools7.0.0.Final规则引擎教程》第4章 4.4 LHS简介&Pattern
LHS简介 在规则文件组成章节,我们已经了解了LHS的基本使用说明.LHS是规则条件部分的统称,由0个或多个条件元素组成.前面我们已经提到,如果没有条件元素那么默认就是true. 没有条件元素,官方示 ...
- hibernate学习一(hibernate简介与准备)
一.hibernate简介 Hibernate是一个开放源代码的对象-关系映射(Object/Relational Mapping 即 ORM)框架,它对JDBC进行了非常轻量级的对象封装,它将POJ ...
- java线程池ThreadPoolExecutor使用简介
一.简介线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int m ...
- MapReduce 简介
2. MapReduce 简介 MapReduce 实际上是分为两个过程 map 过程 : 数据的读取 reduce 过程 : 数据的计算 并行计算是一个非常复杂的过程, mapreduce是一个并行 ...
随机推荐
- hdu1016 Prime Ring Problem
dfs,用全局数组和变量保存并更新当前状态. 答案可以直接在搜索结束时打印,n为奇数时方案数为0. acm.hdu.edu.cn/showproblem.php?pid=1016 #include & ...
- sql查询某条记录
select * from (SELECT t.*,ROWNUM AS RN FROM AWARDISSUE_FOOTBALL t ORDER BY ID DESC) WHERE RN=2
- Mysql-学习笔记(==》函数的建立与使用 十)
函数的建立与使用 USE db;SELECT sname,sscore,CASE WHEN sscore>=90 THEN '优秀'WHEN sscore>=70 THEN '良好'WHE ...
- 2016年12月10日 星期六 --出埃及记 Exodus 21:5
2016年12月10日 星期六 --出埃及记 Exodus 21:5 "But if the servant declares, `I love my master and my wife ...
- shell 条件判断参数
-b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目录,则为真 -e file 若文件存在,则为真 -f ...
- Xcode的Architectures和Valid Architectures的区别,
登录 | 注册 ys410900345的专栏 目录视图摘要视图订阅 学院APP首次下载,可得50C币! 欢迎来帮助开源“进步” 当讲师?爱学习?投票攒课吧 CSDN 2015博 ...
- FlexCell控件的使用
private void grid1_GetCellText(object Sender, FlexCell.Grid.GetCellTextEventArgs e) { // 要使用虚表,可以在Gr ...
- 2012 #5 Gold miner
Gold miner Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 注册dll失败
注册DLL的时候一出现错误: win8下: (右键弹出) 如果再不行, 64位系统下,把DLL移动到C:\Windows\SysWOW64下 更改路径
- 起点CG原创教程——digicel.FlipBook.6教程
http://blog.renren.com/blog/262793929/473221163