java中final关键字可以修饰:
1,基本数据类型
2,引用数据类型
3,方法
4,类
一个一个分析—
①基本数据类型—
一旦定义就不能修改
②引用数据类型–
一旦定义也不能修改–这里是指地址
当属性被final修饰时,必须被初始化,否则报错
③ 方法,被final修饰的方法不能被重写但可以重载
④类,类被声明为final则该类无法被继承,所以抽象类不能被final 修饰
,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
package finallyvar;
/**
* @Auther: GavinLim
* @Date: 2021/7/2 - 07 - 02 - 14:15
* @Description: finallyvar
* @version: 1.0
*/
class Dog {
String name;
}
public class ceshi {
public static void main(String[] args) {
final Dog D = new Dog();
D.name="旺财";
Dog dog = new Dog();
// ceshi.shout(D);
ceshi.shou(dog);
System.out.println(D);
}
public static void shout(Dog d0) {//
d0 = new Dog();
System.out.println(d0);
}
public static void shou(final Dog d2) {
System.out.println("wawatwa");
System.out.println(d2);
}
}
内存分析
下面这段话摘自《Java编程思想》第四版第143页:
“使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用final方法进行这些优化了。“