Java的final关键字
2016-05-26 16:57
330 查看
1.final类
final修饰的类不能被继承,因此的成员方法没有机会被覆盖,final类中的所有成员方法都会被隐式地指定为final方法。final类中的成员变量可以根据需要设为final。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为final类。
final方法不能被子类的方法覆盖,但可以被继承。
2.final方法
如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。final方法不能被子类的方法覆盖,但可以被继承。
使用final方法的原因有二: 第一、把方法锁定,防止任何继承类修改它的意义和实现。 第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
3.final变量(常量)
用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变! 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。另外,final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。
4.final参数
当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。
注:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。 final不能用于修饰构造方法。
final修饰的类不能被继承,因此的成员方法没有机会被覆盖,final类中的所有成员方法都会被隐式地指定为final方法。final类中的成员变量可以根据需要设为final。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再被扩展,那么就设计为final类。
final方法不能被子类的方法覆盖,但可以被继承。
2.final方法
如果一个类不允许其子类覆盖某个方法,则可以把这个方法声明为final方法。final方法不能被子类的方法覆盖,但可以被继承。
使用final方法的原因有二: 第一、把方法锁定,防止任何继承类修改它的意义和实现。 第二、高效。编译器在遇到调用final方法时候会转入内嵌机制,大大提高执行效率。
3.final变量(常量)
用final修饰的成员变量表示常量,只能被赋值一次,赋值后值无法改变! 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。另外,final变量定义的时候,可以先声明,而不给初值,这种变量也称为final空白,无论什么情况,编译器都确保空白final在使用之前必须被初始化。
4.final参数
当函数参数为final类型时,你可以读取使用该参数,但是无法改变该参数的值。
注:父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的。 final不能用于修饰构造方法。
相关文章推荐
- Java文件下载
- java string 初始化
- Java解析xml——Dom解析
- Java 读取properties文件中文乱码解决
- JAVA thread0.interrupt()方法
- Java过滤器与SpringMVC拦截器之间的关系与区别
- Java学习总结(1)
- Android开发之使用Eclipse开发工具实现Android平台JNI的开发
- spring mybatis 多数据源读写分离实际应用
- Rxjava操作符compose()
- java课程第七天,匿名内部类以及异常处理
- [Java 并发]Java多线程同步优化(三)
- 杨辉三角形
- Spring3.2.11与Quartz2.2.1整合时内存泄漏问题解决
- 一起来学Android Studio:(四)导入eclipse项目
- javaWeb 文件上传功能
- Java中@Override的作用
- spring事务传播行为种类
- 方法一 Java如何判断线程池所有任务是否执行完毕
- Java中异常的总结