/*
关键字final的引入
由于继承中有一个现象:方法重写
所以,父类的功能,就会被子类给覆盖调
有些时候,我们不想让子类去覆盖掉父类的功能,只让他使用。
这个时候,针对这种情况,Java提供了一个关键字 final
final 是最终的意思。常见的是它可以修饰 类 方法 变量
*/
class Fu{
public final void show(){
System.out.println("这是绝密文件,不可更改");
}
}
class Zi extends Fu{
//翻译报错
//Zi中的show()无法覆盖Fu中的show()
public void show(){
System.out.println("这是个垃圾文件");
}
}
class Dome{
public static void main(String[] args){
Zi z = new Zi();
z.show();
}
}
/*
final 的特点
final 可以修饰 类 ,假如一个类被final修饰,该类为最终类,不能再被继承
final 可以修饰 方法 被final修饰的方法,不能被重写
final 可以修饰 变量 ,该变量不能重新赋值。因为这个变量变成了常量,只可以被赋值一次
常量:
A:字面值常量:
"hello","10","true"
B:自定义常量:
final int x = 10;
*/
class Fu{
public int num = 10;
public final int num2 = 20;
/*
public final void show(){
}
*/
}
class Zi extends Fu{
//Zi中的show()无法覆盖Fu中的show
public void show(){
int num = 100;
//无法为最终变量num2分配值
int num2 = 200;
System.out.println(num);
System.out.println(num2);
}
}
class Dome{
public static void main(String[] args){
}
}
/*
面试题;
final修饰局部变量的问题
fianl可以修饰局部变量
final修饰:
基本类型:基本类型的值不能发生改变。
引用类型:引用类型的地址值不能发生改变,但是,该对象的堆内存的值是可以发生改变
*/
class Student{
int age = 10;
}
class Dome{
public static void main(String[] args){
//局部变量为基本数据类型
int x = 10;
x =100;
System.out.println(x);
final int y = 10;
//无法为最终变量y分配值
y = 100;
System.out.println(y);
//基本变量是引用数据类型
Student s = new Sudent();
System.out.println(s.age);
s.age = 100;
System.out.println(s.age);
final Student ss = new Sudent();
System.out.println(ss.age);
ss.age = 100;
System.out.println(ss.age);
//重新分配内存空间(重新分配地址值)
ss = new Student();//编译结果:无法为最终变量ss分配值
}
}
Java关键字final的概述和特点,代码举例
最新推荐文章于 2024-02-16 16:21:07 发布