更新時(shí)間:2020-08-27 15:57:51 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3303次
非靜態(tài)類(lèi)
兩者都是非靜態(tài)類(lèi)可以互相訪(fǎng)問(wèn),內(nèi)部類(lèi)訪(fǎng)問(wèn)外部類(lèi)沒(méi)有疑問(wèn),就像是一個(gè)方法(這里只內(nèi)部類(lèi))訪(fǎng)問(wèn)類(lèi)中的變量一樣;但是,外部類(lèi)的成員也可以訪(fǎng)問(wèn)內(nèi)部類(lèi)的內(nèi)容,但是親測(cè)必須實(shí)例了這個(gè)內(nèi)部類(lèi)才可以使用(具體原因去查大佬們寫(xiě)的博客)。
方法外只能對(duì)定義的變量賦值,不可對(duì)游離變量賦值(功底弱):

錯(cuò)誤示例:
注:突發(fā)奇想那一個(gè)類(lèi)里面的方法定義的私有變量類(lèi)可以訪(fǎng)問(wèn)到嗎,然后發(fā)現(xiàn)方法里不能加權(quán)限作用域。
上代碼:
package?com.it.demo03;
?
public?class?MyTest1?{
?
????private?String??s?=?"yyy";
?
?????class?Inner{
????????private?String??u?=?"uuu";
????????public?Inner(){
????????}
????????public?void?gets(){
????????????System.out.println(s);
????????}
????}
?
????public?void?getu()?{
?????????Inner?inner?=?new?Inner();
????????System.out.println(inner.u);
????}
/*
????//方法中內(nèi)部不不能加權(quán)限作用域,方法里面定義的變量是只能方法使用局部變量
????public?void?virtuainner(){
????????private?String?vin?=?"vin";
????}
????*/
}
class?Test2{
????public?static?void?main(String[]?args)?{
????????MyTest1?myTest1?=?new?MyTest1();
????????MyTest1.Inner?inner?=?myTest1.new?Inner();
????????inner.gets();
????????myTest1.getu();
????}
}
靜態(tài)類(lèi):
效果相似:
package?com.it.demo03;
public?class?MyTest2?{
private?static?String??s?=?"yyy";
static?class?Inner{
private?static?String??u?=?"uuu";
public?Inner(){
}
public?static?void?gets(){
System.out.println(s);
s?=?"us";
}
}
public?static?void?getu()?{
//????????Inner?inner?=?new?Inner();
//????????System.out.println(inner.u);
System.out.println(Inner.u);
}
}
class?Test3{
public?static?void?main(String[]?args)?{
MyTest2.getu();
MyTest2.Inner.gets();
}
}
靜態(tài)內(nèi)部類(lèi)實(shí)現(xiàn)單例模式:
pacpackage?com.it.demo02;
?
public?class?SingletonDemo05?{
????private?volatile?static?SingletonDemo05?singletonDemo05?=?null;
????public?static?void?getsd(){
????????System.out.println("getsd:"+singletonDemo05);
????}
????private?SingletonDemo05(){}
????private?static?class?Inner{
????????public?static?SingletonDemo05?getSD(){
????????????if(singletonDemo05?==?null){
????????????????synchronized?(SingletonDemo05.class){
????????????????????if?(singletonDemo05?==?null)
????????????????????????singletonDemo05?=?new?SingletonDemo05();
????????????????}
????????????}
????????????return?singletonDemo05;
????????}
????}
????public?static?SingletonDemo05?getSingletonDemo05(){
????????return?Inner.getSD();
????}
}
?
class?Test4{
????public?static?void?main(String[]?args)?{
????????SingletonDemo05.getsd();
????????SingletonDemo05?singletonDemo05?=?SingletonDemo05.getSingletonDemo05();
????????SingletonDemo05?singletonDemo051?=?SingletonDemo05.getSingletonDemo05();
????????System.out.println(singletonDemo05?==?singletonDemo051);
?
????????SingletonDemo05.getsd();
????????System.out.println(singletonDemo05.hashCode());
????????System.out.println(singletonDemo051.hashCode());
????}
}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“記錄Java內(nèi)部類(lèi)的訪(fǎng)問(wèn)權(quán)限問(wèn)題”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)