final关键字那点事

来源:互联网 发布:eq一卡通网络连接失败 编辑:程序博客网 时间:2024/06/07 02:18

          java中的final关键字,字面意思是最终,那么在java世界中,加了 final 有什么用呢?


         

1、让我们看看在普通外部类中的运用

public final class Baby {}
final关键字加在类的前面,类:Baby将不能被继承

2、也可以运用在普通内部类前面

public class Baby {final class Inter {}}
普通内部类Inter前面有final, 即 Inter 不能被继承


3、静态内部类也可以用final哦

public class Baby {final static class Inter {}}
静态内部类Inter,将不能被extends。   (即:A extends Baby.Inter,   这样是不允许的哦!!!)

4、再来看看用在实例变量上

public class Baby {          final int walkSpeed = 10;}

a、实例变量 walkSpeed定义时就初始化,而且不能再次赋值新的值

b、也可以让final的实例变量不直接初始化,但是必须在生成实例对象时,保证final实例变量得到初始化,也就是说,必须在普通代码块、或者构造方法中保证其初始化。


5、静态变量上的使用

public class Baby {        final static int temp = 100;}
同实例变量一样,类变量也可以加final,也是定义时,必须初始化,并且不可再赋新值


6、抽象类可以加final嘛?

public final abstract class Baby { //这里是错误}
答案:绝对不可以,抽象类设计目的就是为了供其它类继承用的,你加个final,不让该类可以被继承,那得多矛盾


7、接口可以加final吗?

public final interface Baby { //这里是错误的}
答案:绝对不可以,接口是抽象类的升级版,更是供其它类继承用的,你加个final,这不是打脸吗?


8、内部抽象类可以加final吗?

public class Baby {public final abstract class Inter { //这里的final是错误的哦}}
答案:绝对不可以,抽象类那就绝对不行


9、那内部接口可以加final吗?

public class Baby {public final interface Temp { //这里是错误的哦}}

答案:绝对不可以,接口必须不可以


10、枚举类型可以加final吗?

public final enum Baby { //这里是错误的}
答案:不可以,这个跟enum封装有关系,看其他人的解释,已经是个final了,再加final,就多余了……


11、变态一点,构造方法可以加final嘛?

public class Baby { final Baby() { //这里是错误的哦super();}}
答:必须不可以啊,亲啊亲啊


12、让我们看看实例方法吧,嘿嘿

public class Baby {Baby() {super();}final void test() {System.out.println("我是实例方法,哈哈");}}
答案:实例方法(也称对象方法)必须可以加final,加了final的方法不允许重写,即被继承后,不可以重写该方法,呵呵,老子让让你用我这个方法,你不愿意也不行。哈哈


13、再来看看静态方法,嘿嘿

public class Baby {Baby() {super();}final static void walk() {System.out.println("我是静态方法,哈哈");}}

答案:静态方法也可以加final,


14、方法(构造方法、实例方法、静态方法)参数列表能加final吗?

答:必须是可以的啊,一直没说到局部变量,罪过罪过,局部变量必须可以加final,加了final的局部变量,同样是也只能初始化一次,一旦初始化,不能再修改其值,无论是基本数据类型,还是引用数据类型,得到的值(常量、内存地址【引用】),都不再可以更改啦。

public class JubuTest {String name;public JubuTest(final String temp) {name = temp;}void test(final double d) {final int a = 5;}static void going(final int speed) {final float five = 5.0f;}{final int w = 100;}}
我这个例子,类名、变量名称很烂,大家不要学这个哦,变量名称一定要有意义哦…………











0 0
原创粉丝点击