一、final類
描述:
- 用'final'修飾的類不能被繼承,沒有子類,
- 例如,我們是無法寫一個類去繼承String類,然后對String型別擴展的,因為API中已經將String類定義為'final'的了,
示例:
public final class Person {
}
/*
以下代碼編譯報錯
class Student extends Person{
}
*/
二、final方法
描述:
- 用'final'修飾的方法可以被子類繼承,但是不能被子類重寫,
- 例如,每個類都是Object類的子類,繼承了Object中的眾多方法,在子類中可以重寫toString方法、equals方法等,但是不能重寫getClass方法、wait方法等,因為這些方法都是使用fianl修飾的,
示例:
public class Person {
public final void print() {
}
}
class Student extends Person {
/*
以下代碼編譯報錯
public void print() {
}
*/
}
三、常量
描述:
- 用'final'修飾的變數表示常量,只能被賦值一次,賦值后值不能再被改變,
注意:
-
修飾形式引數時,因為在呼叫方法傳參的時候會賦值,所以不能在方法體里再賦值,
public class Person { public void print(final int num) { /* 以下代碼編譯報錯 num = 1; */ } } -
修飾成員變數時,可以選擇在宣告的同時賦值,或在匿名代碼塊中賦值 ,或在構造器中賦值(類中出現的所有構造器都要寫),
public class Person { Person() { num = 1; } Person(int num) { this.num = num; } private final int num; } -
修飾靜態變數時,可以選擇在宣告的同時賦值,或在靜態代碼塊中賦值 ,
public class Person { static { INT_NUM = 1; } /* 靜態常量命名規范為:全部字母大寫,單詞用下劃線分隔, */ private static final int INT_NUM; } -
修飾參考變數時,不能改變參考保存的物件記憶體地址,但可以改變物件的屬性值,
public class Person { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public static void main(String[] args) { final Person person = new Person(); person.setAge(1); person.setAge(2); person.setAge(3); /* 以下代碼編譯報錯 person = new Person(); */ } }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/228058.html
標籤:Java
