java中的final的使用
发布日期:2021-08-22 08:05:40 浏览次数:1 分类:技术文章

本文共 1157 字,大约阅读时间需要 3 分钟。

1、final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为final类。(什么时候使用final?) 

2、final方法不能被子类的方法覆盖,但可以被继承。 2、final方法 如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。 使用final方法的原因有二: 第一、把方法锁定,防止任何继承类修改它的意义和实现。 第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。

3、final变量(常量) 用final修饰的成员变量表示常量,只能被赋值一次,并且必须要给初始值,赋值后值无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。

从下面的例子中可以看出,一旦给final变量初值后,值就不能再改变了。 另外,final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。但是,final空白在final关键字final的使用上提供了更大的灵活性,为此,一个类中的final数据成员就可以实现依对象而有所不同,却有保持其恒定不变的特征。

4、final参数 当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。 注:父类的private成员方法是不能被子类方法覆盖(重写)的,因此private类型的方法默认是final类型的。 final不能用于修饰构造方法

说白了就是用final修饰的都是只能读取,不能修改。

假如用final修饰构造方法的话,如:

1 public  class a{2          public static class People3          {4              final People(){};5          }6    public static void main(String[] args){7         People p = new People();8          }9 }

效果:

原因:前面说了父类的private成员方法是不能被子类方法覆盖(重写)的,所以子类不能直接访问父类的private的方法,即只是拥有,但是无法使用,因此private类型的方法默认是型的。又因为在创建子类对象时会默认调用父类的构造方法,所以说将父类的构造方法调用final是没有任何意义的。

转载于:https://www.cnblogs.com/qq1871707128/p/6084790.html

转载地址:https://blog.csdn.net/weixin_33738982/article/details/93311356 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:IE6下兼容CSS属性min-height的解决办法
下一篇:readonly于disable的区别 及 name和id的区别

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月15日 18时47分57秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java中时刻显示时间的插件_Java中bootstrap-datetimepicker时间插件的使用 2019-04-21
android 服务器获取的数据显示列表,安卓从服务器取得数据,并用listview显示 2019-04-21
mr time android 最新版,MR.TIME MAKER for Android Wear 2019-04-21
鸿蒙系统的条纹怎么回事,鸿蒙手机系统体验 2019-04-21
编译android o sdk,android O 编译及运行 2019-04-21
html文档所有标签,HTML的所有标签(元素) 2019-04-21
HTML5图片放大怎么不溢出来,图片溢出div问题的最终解决方案 - jerrylsxu 2019-04-21
html阻止事件传播,JS传播事件、取消事件默认行为、阻止事件传播详解 2019-04-21
matlab定义双精度型变量_MATLAB 数据类型 2019-04-21
git将本地文件上传到gitlab_gitlab上传文件,本地通过命令上传代码 2019-04-21
cache相关命中率的运算_关于Oracle中各个命中率的计算以及相关的调优 2019-04-21
丢弃commit_git丢弃本地修改的所有文件(新增、删除、修改) 2019-04-21
app做好后如何上线_自己做的app从做好到上架需要什么手续或过程? 2019-04-21
js arraybuffer转string_127个常用的JS代码片段,每段代码花30秒就能看懂(三) 2019-04-21
kali远程登录window_Windows系统远程连接,多人同时远程且互不影响 2019-04-21
嵌入式系统串口解析二进制数_适合嵌入式stm32的五大操作系统解析 2019-04-21
天正lisp文件路径_天正3.0 软件包+安装教程 2019-04-21
可由线性表示且表达式唯一_用“辗转相除法”将两数的最大公因数表成两数的线性组合... 2019-04-21
安装 终止pip_Open-falcon-基础系列(二)-安装与部署(单机版) 2019-04-21
vscode启动项目报jdk11没有_如果Visual Studio太大,不妨还是用VSCode开发C#项目吧 2019-04-21