final关键字
作者:互联网
1 修饰属性
1.1 常量
被final修饰的属性 称之为常量
常量值不能更改
通常在定义的时候赋值
或者
在构造方法中赋值
以上两种方式都是为了保证 在使用之前 常量是有值的
常量名字全部大写,多个单词使用下划线分割 PI COUNTRY_NAME
package com.qfedu.test4;
/**
* 被final修饰的属性 称之为常量
* 常量值不能更改
* 通常在定义的时候赋值
* 或者
* 在构造方法中赋值
* 以上两种方式都是为了保证 在使用之前 常量是有值的
*
* 常量名字全部大写,多个单词使用下划线分割 PI COUNTRY_NAME
*
*/
public class FinalField {
final double PI = 3.14;
final String COUNTRY_NAME;
String name;
public FinalField() {
COUNTRY_NAME = "中华人民共和国";
}
public FinalField(String name) {
COUNTRY_NAME = "中华人民共和国";
}
public static void main(String[] args) {
FinalField ff = new FinalField();
System.out.println(ff.PI);
// ff.pi = 31.4; 只能赋值一次
// 如果不小心将pi的取值 错误修改 那么
// 所计算的数值都将是错的
// 所以 像一些固定的值 我们不应该让操作者可以随意改变
// 适用final修饰
}
}
1.2 静态常量
被final修饰的属性 值是不能改变的
通常这样的值 也没有必要存在多份
所以 我们可以再加上静态关键 static
static final 修饰的属性 静态常量 值不能改变 只存在一份
静态常量通常在定义的时候赋值
或者
在静态代码块中赋值
以上两种方式 同样是为了保证 在使用之前 静态常量的有值的
package com.qfedu.test4;
/**
* 被final修饰的属性 值是不能改变的
* 通常这样的值 也没有必要存在多份
* 所以 我们可以再加上静态关键 static
* static final 修饰的属性 静态常量 值不能改变 只存在一份
*
* 静态常量通常在定义的时候赋值
* 或者
* 在静态代码块中赋值
*
* 以上两种方式 同样是为了保证 在使用之前 静态常量的有值的
*
*/
public class FinalField2 {
public static final double PI = 3.14;
static final String COUNTRY_NAME;
static {
COUNTRY_NAME = "中华人民共和国";
}
public static void main(String[] args) {
System.out.println(FinalField2.PI);
System.out.println(FinalField2.COUNTRY_NAME);
}
}
1.3 修饰方法
被final修饰的方法 不能被子类重写
package com.qfedu.test4;
/**
* 被final修饰的方法 不能被子类重写
*
*/
public class A {
public final void m1() {
System.out.println("A类普通方法m1");
}
public void m2() {
System.out.println("A类普通方法m2");
}
}
class B extends A{
// @Override
// public void m1() {
// super.m1();
// }
@Override
public void m2() {
super.m2();
}
}
1.4 修饰类
使用final修饰类 表示此类不能被继承
我们所使用的String类就是final修饰的
package com.qfedu.test4;
/**
* 使用final修饰类 表示此类不能被继承
* 我们所使用的String类就是final修饰的
*
*/
public final class C {
}
//class D extends C{ 编译报错 因为C类使用final修饰,不能继承
//
//}
标签:常量,COUNTRY,public,关键字,static,修饰,final 来源: https://blog.csdn.net/m0_66763943/article/details/122804251