/*
- final关键字的使用
- 在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。
- 1,当用final来修饰一个类时,此类不能被继承,例如:String,System,StringBuffer。
- 2,当用final来修饰一个方法时,此方法无法被重写,例如Object类中的getClass().
- 3,当用final来修饰一个变量时,表明此为常量,值无法修改
- 3.1当final修饰的变量为属性时,可以考虑赋值的位置是显式初始化,代码块中赋值,构造器中赋值。
- 构造器加载完后对象就会被创建,此时常量必须被赋值,使用对象.方法的方式无法对常量赋值。
- 如果对象的常量不同,则在构造器中赋值,如果都一样则在代码块赋值或者显式初始化赋值。
- 3.2挡final修饰的变量为局部变量时,尤其是final修饰形参时,表明形参是常量。一旦赋值后,
- 只能在方法体内调用此形参,不能修改或重新赋值。
- 4,final可以和static组合使用;static final 可以修饰属性和方法,表明随着类的加载而加载且不可改变。
- static final 修饰的属性也叫全局常量,接口中的属性都是被static final修饰的。
*/
package object_chapter2;
public class Object_Final {
static final int number = 10;
// final int up;//常量无法默认初始化,必须赋值
final int up = 0;
final int left;
final int right;
{
left = 20;//可以在代码块中对常量赋值;
}
public Object_Final() {
right = 20;//构造器中可以对常量赋值
}
public Object_Final(int n) {
right = n;//所有重载的构造器中都要对常量赋值,避免没有赋值的情况出现
}
public static void main(String[] args) {
//number = 20;//final修饰的属性为常量无法修改
System.out.println(number + 10);//常量只能调用
final boolean b = true;
final double PI = 3.1415;//final可以修饰局部变量
//System.out.println(PI++);//无法修改
System.out.println(2 * PI);//可以被调用
System.out.println(!b);
final Final f = new Final();
// f = null;//final修饰的对象无法修改
// f = new Final();
System.out.println(f.num);
f.num = 22;
System.out.println(f.num);//final修饰的对象属性可以修改
}
public final void say() {
System.out.println("Hello");
}
}
final class Final extends Object_Final{
int num = 11;
// public void say() {//final修饰的方法无法被子类重写
//
// }
}
//class FinalA extends Final{//final 修饰的类无法被继承
//
//}