【327-333】Final修饰词
2021-12-31 16:00:00 # JavaSE

总结

1、final修饰的类无法继承。
2、final修饰的方法无法覆盖。
3、final修饰的变量只能赋一次值。
4、final修饰的引用一旦指向某个对象,则不能再重新指向其它对象,但该引用指向的对象内部的数据是可以修改的。
5、final修饰的实例变量必须手动初始化,不能采用系统默认值。
6、final修饰的实例变量一般和static联合使用,称为常量。
public static final double PI = 3.1415926 ;

Final 修饰的类无法继承

1
2
3
4
5
6
7
8
public class Final修饰的类无法继承 {
}

/*
final class A{}
class B extends A{}
*/

Final 修饰的方法无法覆盖

1
2
3
4
5
6
7
8
9
10
11
12
public class Final修饰的方法无法覆盖 {
}

/*
class A{
public final void test(){}
}
class B extends A{
public void test(){}
}
*/

Final 修饰的局部变量

1
2
3
4
5
6
7
8
9
public class Final修饰的局部变量 {
public static void main(String[] args) {
/* 只能赋值一次
final int i = 100;
i = 200;
*/
}
}

Final 修饰引用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Final修饰引用 {
public static void main(String[] args) {
// 无法为最终变量p分配值
final Person p = new Person(30); // 地址0x111
// p = new Person(); 地址0x123
// p = null;
// final 的引用指向某个对象
// 但是内部的数据可以被修改
p.age = 40;

}
}

class Person{
int age;

public Person(){}
public Person(int age) {
this.age = age;
}
}

Final 修饰实例变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Final修饰实例变量 {
public static void main(String[] args) {

}
}

class User{
// 1.
final int age = 30;

// 2.
final double height;
public User(double height) {
// 只要赶在系统给height赋默认值就行
// height = 0,这个等号是在构造方法的时候赋值
this.height = height;
}

}

常量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class _332_常量 {
public static void main(String[] args) {

}
}

class Chinese{
String idCard;
String name;
// 实例变量如果用final修饰,说明该实例变量不会随对象的变化而变换
// final 修饰的实例变量一般添加 static 修饰
// 每一次new都会占用内存,使用static随类的加载而生成,存放在方法区,节省内存
static final String COUNTRY = "中国";
}

class MyMath{
public static final double PI = 3.1415926;
}
Prev
2021-12-31 16:00:00 # JavaSE
Next