Java全面細(xì)致講解final的使用
一、理解
final:最終的
二、作用
final 可以用來修飾的結(jié)構(gòu):類、方法、變量
1. 修飾-類
final 用來修飾一個(gè)類,表示此類不能被其它類所繼承,提高安全性,提高程序的可讀性。
比如:String類、System類、StringBuffer類…
代碼演示:
final class A{
}
class B extends A{ //錯(cuò)誤,不能被繼承。
}
2. 修飾-方法
final 用來修飾方法:表明此方法不能被子類重寫。
比如:Object類中getClass();
代碼演示:
class A {
public final void print() {
System.out.println("A");
}
}
class B extends A {
public void print() {
// 錯(cuò)誤,不能被重寫。
}
}
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 標(biāo)記的成員變量必須在聲明(顯式初始化)時(shí)或在 每個(gè)構(gòu)造器中或代碼塊中顯式賦值,然后才能使用。
如:final double MY_PI = 3.14;
3.2 修飾-局部變量
使用 final 修飾局部變量時(shí),表明此形參是一個(gè)常量。當(dāng)我們調(diào)用此方法時(shí),給常量形參賦一個(gè)實(shí)參。一旦賦值以后,就只能在方法體內(nèi)使用此形參,且不能進(jìn)行重新賦值。
三、經(jīng)典題目
//題目一:
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的無(wú)參數(shù)的構(gòu)造器");
}
}
class Mid extends Root{
static{
System.out.println("Mid的靜態(tài)初始化塊");
}
{
System.out.println("Mid的普通初始化塊");
}
public Mid(){
super();
System.out.println("Mid的無(wú)參數(shù)的構(gòu)造器");
}
public Mid(String msg){
//通過this調(diào)用同一類中重載的構(gòu)造器
this();
System.out.println("Mid的帶參數(shù)構(gòu)造器,其參數(shù)值:"
+ msg);
}
}
class Leaf extends Mid{
static{
System.out.println("Leaf的靜態(tài)初始化塊");
}
{
System.out.println("Leaf的普通初始化塊");
}
public Leaf(){
//通過super調(diào)用父類中有一個(gè)字符串參數(shù)的構(gòu)造器
super("小老師ir");
System.out.println("Leaf的構(gòu)造器");
}
}
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的無(wú)參數(shù)的構(gòu)造器
Mid的普通初始化塊
Mid的無(wú)參數(shù)的構(gòu)造器
Mid的帶參數(shù)構(gòu)造器,其參數(shù)值:小老師ir
Leaf的普通初始化塊
Leaf的構(gòu)造器
Root的普通初始化塊
Root的無(wú)參數(shù)的構(gòu)造器
Mid的普通初始化塊
Mid的無(wú)參數(shù)的構(gòu)造器
Mid的帶參數(shù)構(gòu)造器,其參數(shù)值:小老師ir
Leaf的普通初始化塊
Leaf的構(gòu)造器
*/到此這篇關(guān)于Java全面細(xì)致講解final的使用的文章就介紹到這了,更多相關(guān)Java final內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)音頻轉(zhuǎn)文本的示例代碼(語(yǔ)音識(shí)別)
Java中實(shí)現(xiàn)音頻轉(zhuǎn)文本通常涉及使用專門的語(yǔ)音識(shí)別服務(wù),本文主要介紹了Java實(shí)現(xiàn)音頻轉(zhuǎn)文本的示例代碼(語(yǔ)音識(shí)別),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05
Java讀寫txt文件時(shí)防止中文亂碼問題出現(xiàn)的方法介紹
這篇文章主要介紹了Java讀寫txt文件時(shí)防止中文亂碼問題出現(xiàn)的方法,同時(shí)需要注意系統(tǒng)默認(rèn)的文本保存編碼的設(shè)置,需要的朋友可以參考下2015-12-12
解決Maven項(xiàng)目加載spring bean的配置xml文件會(huì)提示找不到問題
這篇文章主要介紹了解決Maven項(xiàng)目加載spring bean的配置xml文件會(huì)提示找不到問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
使用jsoup解析html的table中的文本信息實(shí)例
今天小編就為大家分享一篇使用jsoup解析html的table中的文本信息實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05

