引入的一个场景是:
有时候子类会去重写父类的方法方法,但是有时候不希望子类重写父类的方法
这个时候java 提供了一个关键字fianl来修饰
那么
子类中的方法不能重写被final修饰的方法
class Father{
public final void show(){
System.out.println(“不能修改hello java”);
}
}
class Son extends Father{
//编译报错:
//Son中的show()无法覆盖Father中的show()
//被覆盖的方法为final
public void show(){
System.out.println(“我修改了hello java文件”);
}
}
class Test{
public static void main(String[] args){
Son s = new Son();
s.show();
}
}
final关键字:
意思是最终的
它可以修饰类、方法、变量
final修饰:
A:类 这个类不能别其他类继承
B:方法
这个方法不能被子类重写
C:变量
a:类型为基本数据类 这个变量就称为了常量,常量一旦被赋值就不能再次赋值了,不然就报错了
常量:字面常量 “kevin” “cidy”,10,12等
自定义常量:fianl String num = “001”;
b:类型为引用数据类型的时候 地址值不会改变,但是堆内存中的值可以进行修改
比如:
class Student{
int age =10;
}
class StuTest{
public static void main(String[] args){
Student s = new Student();
System.out.println(s.age)://输出结果为:10;
final Student s2 = new Student();
s2.age=100;
System.out.println(s2.age);//输出结果为100;
}
}
在修饰变量(数据类型为基本数据类型的时候)
如果这个变量被赋了初始值,那么这个变量就不能在被赋值,不然会报错。
public class Test3{
public static void main(String[] args){
final int a =12;
System.out.println(“a = “+a);
//错误: 无法为最终变量a分配值
a = 21;
System.out.println(“a = “+a);
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100817.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...