Java全面細致講解final的使用
一、理解
final:最終的
二、作用
final 可以用來修飾的結構:類、方法、變量
1. 修飾-類
final 用來修飾一個類,表示此類不能被其它類所繼承,提高安全性,提高程序的可讀性。
比如:String類、System類、StringBuffer類…
代碼演示:
final class A{
}
class B extends A{ //錯誤,不能被繼承。
}
2. 修飾-方法
final 用來修飾方法:表明此方法不能被子類重寫。
比如:Object類中getClass();
代碼演示:
class A {
public final void print() {
System.out.println("A");
}
}
class B extends A {
public void print() {
// 錯誤,不能被重寫。
}
}
3. 修飾-變量
final 修飾的變量(成員變量或局部變量)稱為常量。名稱大寫,且只能被賦值一次。
static final 用來修飾屬性:全局常量。
代碼演示:
class A {
private final String INFO = "嘻嘻"; //聲明常量
public void print() {
//INFO = "哈哈";
//The final field A.INFO cannot be assigned
}
}3.1 修飾-成員變量(屬性)
final 標記的成員變量必須在聲明(顯式初始化)時或在 每個構造器中或代碼塊中顯式賦值,然后才能使用。
如:final double MY_PI = 3.14;
3.2 修飾-局部變量
使用 final 修飾局部變量時,表明此形參是一個常量。當我們調用此方法時,給常量形參賦一個實參。一旦賦值以后,就只能在方法體內使用此形參,且不能進行重新賦值。
三、經典題目
//題目一:
public class Test1 {
public int addOne(final int x) {
// return ++x;
//Cannot assign a value to final variable 'x'
return x + 1;
}
}
//題目二:
public class Something {
public static void main(String[] args) {
Other o = new Other();
new Something().addOne(o);
}
public void addOne(final Other o) {
// o = new Other();
o.i++;
}
}
class Other {
public int i;
}
//題目三:
class Root{
static{
System.out.println("Root的靜態(tài)初始化塊");
}
{
System.out.println("Root的普通初始化塊");
}
public Root(){
super();
System.out.println("Root的無參數的構造器");
}
}
class Mid extends Root{
static{
System.out.println("Mid的靜態(tài)初始化塊");
}
{
System.out.println("Mid的普通初始化塊");
}
public Mid(){
super();
System.out.println("Mid的無參數的構造器");
}
public Mid(String msg){
//通過this調用同一類中重載的構造器
this();
System.out.println("Mid的帶參數構造器,其參數值:"
+ msg);
}
}
class Leaf extends Mid{
static{
System.out.println("Leaf的靜態(tài)初始化塊");
}
{
System.out.println("Leaf的普通初始化塊");
}
public Leaf(){
//通過super調用父類中有一個字符串參數的構造器
super("小老師ir");
System.out.println("Leaf的構造器");
}
}
public class LeafTest{
public static void main(String[] args){
new Leaf();
System.out.println();
new Leaf();
}
}
/*output:
Root的靜態(tài)初始化塊
Mid的靜態(tài)初始化塊
Leaf的靜態(tài)初始化塊
Root的普通初始化塊
Root的無參數的構造器
Mid的普通初始化塊
Mid的無參數的構造器
Mid的帶參數構造器,其參數值:小老師ir
Leaf的普通初始化塊
Leaf的構造器
Root的普通初始化塊
Root的無參數的構造器
Mid的普通初始化塊
Mid的無參數的構造器
Mid的帶參數構造器,其參數值:小老師ir
Leaf的普通初始化塊
Leaf的構造器
*/到此這篇關于Java全面細致講解final的使用的文章就介紹到這了,更多相關Java final內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決Maven項目加載spring bean的配置xml文件會提示找不到問題
這篇文章主要介紹了解決Maven項目加載spring bean的配置xml文件會提示找不到問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08

