博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
final关键字
阅读量:4594 次
发布时间:2019-06-09

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

1.final应用场景:
1.1 一个永不改变的编译时常量。
1.2 一个运行时被改变的值,并且不希望其值被改变。
2.final修饰变量、方法和类
2.1 final修饰变量:修饰基本类型变量时,变量的值无法改变。修饰引用变量时,变量的指向地址无法改变,但变量指向的对象是可以改变的。
2.2 final修饰方法:只有在想明确禁止覆盖时,才将方法设置为final的。private默认为final的,显式添加没有任何意义。
2.3 final修饰类:此时不容许类被继承,标志该类方法不可以被覆盖。
package extends1.one;class Sub extends Sup{    public void funSup(){        System.out.println("sub funSup...");    }    public void finalPrivate(){        System.out.println("sub finalPrivate...");    }    public void fun(){        System.out.println("sub fun...");    }}public class Sup{
public void funSup(){ System.out.println("sup funSup..."); } //该方法不能在Sup子类中覆盖,否则编译报错 public final void finalSup(){ System.out.println("sup finalSup..."); } //子类中可以有与该方法相同的方法,但是两个方法是没有任何关系的, //private方法对外部而言可以看做不存在包括其子类 private void finalPrivate(){ System.out.println("sup finalPrivate..."); } public static void main(String[] args) { Sup s=new Sub(); s.funSup(); //private方法是无法与外部方法之前有任何联系的, //即使子类中含有finalPrivate()方法,但和父类方 //法没有任何关系,对父类而言该方法没有被覆盖。 s.finalPrivate(); //The method fun() is undefined for the type Sup //s.fun(); ((Sub)s).fun(); ((Sub)s).finalPrivate(); /* Output: * sub funSup... * sup finalPrivate... * sub fun... * sub finalPrivate... */ }}
3.用final来修饰引用类型的意义不大,因为在使用时控制的只是引用指向地址不变,并不能控制引用指向对象保持不变。

转载于:https://www.cnblogs.com/wjc920/p/9256170.html

你可能感兴趣的文章
双语小说阅读:《谁动了我的奶酪》
查看>>
linux touch和vi建立的文件是什么文件类型的
查看>>
3-9
查看>>
导航右侧添加按钮、隐藏导航条和状态栏
查看>>
第二阶段冲刺6
查看>>
Java中final关键字的用法
查看>>
URL重写
查看>>
快速超越Chrome 微软IE9最新功能详解
查看>>
今天写一注册机时遇到猥亵的cookie设置。
查看>>
22万个木箱!TWaver 3D极限压榨
查看>>
NPOI使用手册
查看>>
GIT 常用命令
查看>>
php接收二进制文件转换成图片
查看>>
C++虚函数原理(转)
查看>>
InnoDB存储引擎介绍-(6) 一. Innodb Antelope 和Barracuda区别
查看>>
字典树的动态与静态模板
查看>>
sscanf的最基础用法(非原创)
查看>>
A new start
查看>>
GIt-恢复进度
查看>>
[转载]几个有趣的Linux命令
查看>>