這裡東西還是很多的,很雜
我曾經有過問題的地方總結的4.2 為什麼方法內的變數都要用final 後來明白了
方法內部類物件只能訪問該內部類所在方法的final修飾的區域性變數
1.內部類可以直接訪問外部類中的成員,包括私有
原因:因為在內部類中持有乙個外部類的應用,格式:外部類.this
class outer } }
2.外部類要訪問內部類,必須建立內部類物件
a.從外部類的非靜態方法中訪問內部類
class outer
class inner }}
b、從外部類的靜態方法中訪問內部類
class outer
}public static voidseeinner()
}c、在外部其它類中訪問內部類
class outer }}
public class touter
}對比:在外部類的非靜態方法中訪問內部類:inner in = new inner();
在外部類的靜態方法中訪問內部類:outer.innerin = new outer().new inner();
在外部其他類中訪問內部類:outer.inner in = new outer().new inner();
3.當內部類在成員位置上,就可以被成員修飾符修飾
3.1當內部類被static修飾後,就只能訪問外部類中的static成員,出現訪問侷限
class outer }}
3.2在外部其他類中,如何訪問static內部類的非靜態成員呢?
newouter.inner().seeouter();
理由:因為外部內一旦被載入,靜態內部類也被載入了,所以直接建立內部類物件呼叫方法即可
class outer }}
public class test
}3.3在外部其他類中,如何訪問static內部類的靜態成員呢?
outer.inner.seeouter();
class outer }}
public class test
}3.4.當內部類中定義了靜態成員,該內部類必須是靜態的
class outer }}
3.5.當內部類中的靜態方法訪問內部類時,內部類也必須是靜態的(參考上面2中b位置1處)
4.方法內部類(區域性內部類)
把類放在方法內
class outer } }
}4.1、方法內部類只能在定義該內部類的方法內例項化,不可以在此方法外對其實例化
4.2、方法內部類物件不能訪問該內部類所在方法的非final區域性變數
class outer
} inner in = new inner();
in.seeouter();
//只能在方法內部訪問內部類
}public static void main(string args)
}4.3、方法內部類的修飾符
與成員內部類不同,方法內部類更像乙個區域性變數
可以用於修飾方法內部類的只有final和abstract
4.4、靜態方法內的方法內部類
靜態方法是沒有this引用的,因此在靜態方法內的內部類遭受同樣的待遇,即:只能訪問外部類的靜態成員
5.匿名內部類
匿名內部類就是內部類的簡寫格式
定義匿名內部類的前提:內部類必須繼承乙個類或實現介面
匿名內部類就是乙個匿名子類物件
格式:new 父類或者介面()
黑馬程式設計師 內部類
windows phone 7手機開發 net培訓 期待與您交流!什麼是內部類呢?將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類 內建類 巢狀類 內部類的訪問特點有哪些呢?內部類可以直接訪問外部類中的成員,包括私有成員 而外部類要訪問內部類中的成員必須要建立內部類的物件。內部類有什麼作用呢?...
黑馬程式設計師 內部類
asp.net android io開發s net培訓 期待與您交流!內部類即在乙個外部類的內部再定義乙個類。內部類作為外部類的乙個成員,且依附於外部類而存在。內部類的訪問規則 1 內部類可以直接訪問外部類中的成員,包括私有。2 外部類需要訪問內部類時,必須建立內部類物件。訪問格式 外部類名.內部類...
黑馬程式設計師 內部類
asp.net android ios rel noopener noreferrer target blank asp.net android ios開發 net rel noopener noreferrer target blank net培訓 期待與您交流!內部類 將乙個類定義在另乙個類的裡...