Java中关键字fianl的归纳
2015-10-07 14:44
661 查看
final关键字可以修饰:类、方法、变量
一、final修饰变量
final修饰的变量是一个常量,只能赋值一次。写法规范:常量所有字母都大写,多个单词,中间用_连接。
二、final修饰方法
final修饰的方法不可以被覆盖。
使用final方法的原因有两个。
第一个原因是把方法锁定,以防任何继承类修改它得含义。这是出于设计的考虑:想要确保在继承中使方法行为保持不变,并不会被覆盖。
第二个原因是效率,在JAVA的早起实现中,如果将一个方法指明为final, 就同意编译器将针对该方法的调用转为内嵌调用
另外类中所有的private方法都是隐式的指定为是final的。由于无法取得private方法,故也无法覆盖它,可以对private方法添加fianl修饰词,但这并不会这个方法增加额外的意义。
三、fianl修饰的类
final修饰的类不可以被继承
一、final修饰变量
final修饰的变量是一个常量,只能赋值一次。写法规范:常量所有字母都大写,多个单词,中间用_连接。
二、final修饰方法
final修饰的方法不可以被覆盖。
使用final方法的原因有两个。
第一个原因是把方法锁定,以防任何继承类修改它得含义。这是出于设计的考虑:想要确保在继承中使方法行为保持不变,并不会被覆盖。
第二个原因是效率,在JAVA的早起实现中,如果将一个方法指明为final, 就同意编译器将针对该方法的调用转为内嵌调用
另外类中所有的private方法都是隐式的指定为是final的。由于无法取得private方法,故也无法覆盖它,可以对private方法添加fianl修饰词,但这并不会这个方法增加额外的意义。
class WithFinal { private final void f(){ System.out.println("WithFinal.f()"); } private void g(){ System.out.println("WithFinal.g()"); } } class OverridingPrivate extends WithFinal { private final void f(){ System.out.println("OverridingPrivate.f()"); } private void g(){ System.out.println("OverridingPrivate.g()"); } } class OverridingPrivate2 extends OverridingPrivate { public final void f(){ System.out.println("OverridingPrivate2.f()"); } public void g(){ System.out.println("OverridingPrivate2.g()"); } } public class FinalMethod { public static void main(String[] args){ OverridingPrivate2 op2 = new OverridingPrivate2(); op2.f(); op2.g(); OverridingPrivate op = op2; WithFinal wf = op2; /*上面两个类都是OverrindPrivate2的父类 但是op和wf都不能访问自己类中的方法*/ } }就像上面代码那样,如果你试图覆盖一个private方法,似乎是奏效的,而却编译没有报错。其实还是这并不叫覆盖,因为如果某个方法为private,它就不是父类的接口的一部分,它仅是一些隐藏于本类中的程序代码,只不过是与父类具有相同的名称而已。但是如果在子类中以相同的名称生成一个public、protected或是包访问权限的方法的话,此时你是在子类创建了一个新的方法。
三、fianl修饰的类
final修饰的类不可以被继承
相关文章推荐
- Java泛型Type
- Eclipse 中的多线程编译——如何成倍提升Gcc编译器的编译速度
- Java-图片裁剪
- Java笔记--线程安全与锁优化
- 【源】从零自学Hadoop(07):Eclipse插件
- java session 监听
- JDK自带工具一览表。妈妈再也不用担心你到处去下载小软件了~~
- "=="与"equals"的区别,
- java中的垃圾回收机制的相关知识
- Eclipse Xml编译错误Referenced file contains errors - spring-beans-4.0.xsd
- java replaceall() 转义字符
- JAVA图片上传类
- hdu 2002 计算球体积 java/c
- JavaWeb知识结构图
- java 反射机制
- java 汉字保存到mysql 乱码
- [转]java中Collections.sort排序详解
- javac与java命令在窗口编译java文件的操作和作用
- struts文件上传
- Climbing Stairs | leetcode 70 【Java解题报告】