final關(guān)鍵字修飾類, 修飾字段, 修飾方法,修飾局部變量,修飾方法的形參
final修飾類,表示最終類, 不能被繼承,不能作為父類存在
final修飾字段,在定義時必須顯示初始化, 不能被修改, 一般與static同時使用,所有字母都大寫,稱為final常量
final修飾方法,不能被覆蓋(重寫)
final修飾局部變量, 一旦初始化就不能再修改, 注意final修飾引用類型變量,是指這個變量不能再指向 其他對象 , 可以修改它的字段值
final修飾方法形參, 在方法體中不能修改final參數(shù)的值
package com.bjpowernode.chapter01.demo04.p1;
/**
* 1) final修飾類,表示這個類是最終類, 不能被繼承
* 如System類/String類就是使用final修飾的
* 當定義的類不想被別的類繼承時, 就可以使用final修飾
* @author Administrator
*
*/
public final class Father {
}
package com.bjpowernode.chapter01.demo04.p2;
/**
* 2) final修飾字段
* final字段必須初始化,要么在定義時賦初值,要么在構(gòu)造方法中賦初值
* final字段不能重新賦值
* 一般情況下,final修飾字段時, 同時使用static一起修飾, 稱為final常量 , 所有字母都大寫
* @author Administrator
*
*/
public class Father2 {
int xx;
int yy = 20;
final int oo = 456; //final字段在定義時顯示初始化
final int zz; //final字段在構(gòu)造方法中顯示初始化
final static double PI = 3.14; //final常量
public Father2() {
zz = 121;
}
public void mm() {
xx = 123;
yy = 202;
// zz = 789; //he final field Father2.zz cannot be assigned
// oo = 369; //final字段不能被重新賦值
}
}
package com.bjpowernode.chapter01.demo04.p3;
/**
* 3) final修飾方法, 不 能被子類重寫(覆蓋)
* 注意:子類可以繼承到final方法, 只是不能重寫
* @author Administrator
*
*/
public class Father3 {
public void m1(int xx) {
System.out.println("父類的實例方法,可以子類覆蓋");
}
public final void m2(int x, int y ) {
System.out.println("使用final修飾的方法, 不能被子類重寫");
}
}
package com.bjpowernode.chapter01.demo04.p4;
import com.bjpowernode.chapter01.demo03.Book;
/**
* 4) final修飾局部變量
* 一旦初始化完成, 就不能再重新賦值
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) {
//定義局部變量
int x ;
x = 10;
int y = 20;
//final修飾局部變量
final int z;
z = 30;
final int t = 40;
//可以給局部變量重新賦值
x = 101;
y = 202;
// z = 303; //不能給final局部變量重新賦值
//final修飾引用類型變量
final Book book1 = new Book("java入門", "勇哥", "動力節(jié)點", 66.6);
//final關(guān)鍵字修飾的是book1變量,不能給book1變量重新賦值,可以對象的字段值
// book1 = new Book("java高級", "勇哥", "動力節(jié)點", 88.8);
book1.name = "java高級技術(shù)";
}
}
package com.bjpowernode.chapter01.demo04.p5;
/**
* 5) final修飾方法形參
* final形參不能被賦值
* @author Administrator
*
*/
public class Test {
public static void main(String[] args) {
m1(10, 20); //在調(diào)用方法時, 給final形參初始化
}
public static void m1( int x, final int y ) {
x = 101;
// y = 202; //final形參不能被賦值
}
}