本文共 1777 字,大约阅读时间需要 5 分钟。
【转载原因:作者写的很清楚】
【转载原文:】
1. 在java中声明类、属性和方法时,可以使用关键字final来修饰,表示“最终的”。
2.java 面试题final关键字知识点,例题提高安全性,提高程序的可读性
这个类就不能被继承。如:String类、StringBuffer类、System类//class SubString extends String{// //}final class A{ }//class B extends A{// //}
不能被子类重写。如:Object的getClass();功能已经确定下来,就算子类重写了该方法后,也是实现一样的功能,所以没有必要被子类重写。
class C{ public final void method1() { System.out.println("I am method1"); }}class E extends C{ public void method1() {// System.out.println("I am method1 for D");// }}
此属性就是一个常量,一旦初始后,不可再被赋值。习惯上,重用大写字符表示。
此常量在哪里赋值:①此常量不能使用默认初始②可以显示的赋值、代码块、构造器 注:显示赋值和代码块赋值只能有其中的一个 变量用static final修饰:全局常量,如Math类的PIpublic class Test { public static void main(String[] args) { C c = new C(); System.out.println(c.getClass()); System.out.println(Math.PI); }}class D{// final int I;//常量不能使用默认的赋值 final int I = 11; final double PI; final String NAME; public void m1(){ System.out.println(I);// I = 10; } { PI = 3.14; } public D() { NAME = "DD"; } public D(String name) { this();// NAME = "DD"; }}//c
付:后续需要知道final 与 finally finalize()区别
Object.finalize()//辣鸡回收的,显示把内存中对象清理掉
/* * 错误,调用方法的时候已经对x进行赋值,不能再对其进行++操作。 */public class Something { public int addOne(final int x) { return ++x; } }
/* * 正确,因为final修饰的类,但++的却是其对象,说明类属性改变,类不一定跟着改变 */public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { o.i++; } } class Other { public int i;}
————————————————
版权声明:本文为CSDN博主「不等风雨,只等你」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/qq_34626097/article/details/83388389