卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

內(nèi)部類可以是final類嗎 匿名內(nèi)部類訪問(wèn)局部變量,為什么final?

匿名內(nèi)部類訪問(wèn)局部變量,為什么final?這是變量作用域的問(wèn)題,因?yàn)槟涿麅?nèi)部類出現(xiàn)在方法內(nèi)部。如果要訪問(wèn)方法的參數(shù)或方法中定義的變量,則必須將這些參數(shù)和變量修改為final。盡管匿名內(nèi)部類在方法內(nèi)部,

匿名內(nèi)部類訪問(wèn)局部變量,為什么final?

這是變量作用域的問(wèn)題,因?yàn)槟涿麅?nèi)部類出現(xiàn)在方法內(nèi)部。如果要訪問(wèn)方法的參數(shù)或方法中定義的變量,則必須將這些參數(shù)和變量修改為final。

盡管匿名內(nèi)部類在方法內(nèi)部,但內(nèi)部類被編譯為外部。內(nèi)部這意味著內(nèi)部類的位置和外部類中的方法處于同一級(jí)別。外部類中方法中的變量或參數(shù)只是方法的局部變量,這些變量或參數(shù)的作用域僅在方法內(nèi)部有效。由于內(nèi)部類和方法在編譯時(shí)處于同一級(jí)別,因此只有在方法中的變量或參數(shù)是final時(shí)才能引用內(nèi)部類。

匿名內(nèi)部類訪問(wèn)局部變量為什么final?

確保不會(huì)在匿名內(nèi)部類內(nèi)部或外部修改局部變量。因?yàn)槟涿麅?nèi)部類實(shí)際上復(fù)制了一個(gè)局部變量并在匿名內(nèi)部類中使用它。如果未設(shè)置為final,則局部變量將被外部修改,這將導(dǎo)致與匿名內(nèi)部類中的副本不一致,這在邏輯上是不合理的。所以Java虛擬機(jī)就是這樣設(shè)計(jì)的,強(qiáng)制局部變量是final,這在語(yǔ)義上是一致的。

匿名內(nèi)部類調(diào)用參數(shù)時(shí)為什么參數(shù)必須是final的?

public class InnerClass{

public InnerClass(字符串名稱,字符串年齡){這個(gè)。內(nèi)部類$name=姓名這個(gè)。內(nèi)部類$age=age

}

public void display(){系統(tǒng)輸出打印( 這個(gè)。內(nèi)部類$name“---”這個(gè)。內(nèi)部類$age)

}

}

因此,根據(jù)上面的代碼,內(nèi)部類不直接調(diào)用方法傳遞的參數(shù),而是使用自己的構(gòu)造函數(shù)來(lái)備份傳入的參數(shù)。內(nèi)部方法調(diào)用自己的屬性,而不是外部方法傳遞的參數(shù)。

到目前為止,我們還沒(méi)有解釋為什么它是最終的??jī)?nèi)部類中的屬性和外部方法的參數(shù)從外觀上看是一樣的,但實(shí)際上不是,所以可以隨意更改。也就是說(shuō),內(nèi)部類中屬性的改變不會(huì)影響外部參數(shù)。然而,從程序員的角度來(lái)看,這是不可行的。畢竟,從程序的角度來(lái)看,這兩個(gè)基本參數(shù)可以改變是一樣的。如果內(nèi)部類需要更改,但外部方法的形式參數(shù)不更改,則很難理解和接受。因此,為了保持參數(shù)的一致性,規(guī)定使用final,以避免形式參數(shù)不變。