轉自:
http://www.java265.com/JavaCourse/202204/3129.html
下文筆者講述Java內部類的簡介說明,如下所示:
內部類的簡介
我們將在其他類中的類稱之為“內部類”
內部類的定義位置:
定義在類中方法外的類
成員內部類可以使用不同的修飾關鍵字進行修飾,不同的修飾關鍵字會生成不同的訪問方式
內部類的定義方法
class 外部類 {
// 外部類的成員位置
class 內部類{
// 內部類的成員位置
}
}
例:內部類定義
class Person { //外部類
String name;
class Heart { //內部類
// 成員
}
}
創建內部類物件的方法
外部類 外部類物件名 = new 外部類(); 外部類.內部類 內部類物件名 = 外部類物件名.new 內部類(); 簡寫方式: 外部類名.內部類名 物件名 = new 外部型別().new 內部型別();
例:
//外部類
class Outer {
// 外部類成員變數
private String outer_filed = "我是外部類成員變數";
//成員內部類
class Inner {
// 內部類成員變數
private String inner_filed = "我是內部類成員變數";
//內部類的成員方法
public void inner_method() {
System.out.println("inner_method....run... " + inner_filed );
}
}
// 外部類成員方法
public void outer_method(){
System.out.println("outer_method....run... " + outer_filed );
}
}
// 測驗類
public class InnerDemo {
public static void main(String[] args) {
// 創建外部類物件
Outer o = new Outer();
// 創建內部類物件
Outer.Inner i = p.new Inner();//表示通過外部類物件創建內部類物件
// 呼叫外部類方法
i.outer_method();
// 呼叫內部類方法
i.inner_method();
}
}
注意事項:
內部類是一個獨立的類
編譯之后的內部類會被編譯成獨立的.class檔案,類的名稱會使用“類名和$符號”組成
例:Outer$Inner.class
注意事項:
1.當一個內部類被私有化后,這個內部類就無法在外部進行訪問
2.私有成員的內部類也是外部類的成員
3.外部類可以訪問私有成員方法,本類之外無法訪問
4.私有成員內部類,只能在外部類中其他成員方法中創建成員內部類物件,通過物件的方法訪問"私有成員內部類"的成員
例:
//外部類
class Outer {
// 外部類成員變數
private String outer_filed = "我是外部類成員變數";
//被私有的成員內部類
private class Inner {
// 內部類成員變數
private String inner_filed = "我是內部類成員變數";
//內部類的成員方法
public void inner_method() {
System.out.println("inner_method....run... " + inner_filed );
}
}
// 外部類成員方法
public void outer_method(){
System.out.println("outer_method....run... " + outer_filed );
}
/*
被私有的外部類成員方法:
當前外部類的成員方法被私有了,因此此方法外界無法訪問,但是本類中是可以正常訪問的, 我們可以在本類中定義一個公開的方法來呼叫私有的方法,然后創建物件呼叫公開的方法即可訪問,
*/
// 外部類公開的方法
public void pub_method(){
// 此公開方法可以訪問本類私有的成員
Inner inner = new Inner();
inner.inner_method();
// 可以在此方法內訪問創建私有內部類的物件,然后呼叫內部類方法,最后通過外部類物件呼叫此 // 方法即可完成私有成員內部類方法的間接呼叫
}
}
// 測驗類
public class InnerDemo {
public static void main(String[] args) {
// 創建外部類物件
Outer o = new Outer();
// 呼叫外部類訪問私有內部類的公開方法 , 間接呼叫私有成員內部類
o.pub_method();
}
}
被靜態的成員內部類
外部類.內部類 變數名 = new 外部類.內部類();
例:
//外部類
class Outer {
// 外部類成員變數
private String outer_filed = "我是外部類成員變數";
//被靜態的成員內部類
static class Inner {
// 內部類成員變數
private String inner_filed = "我是內部類成員變數";
//內部類的成員方法
public void inner_method() {
System.out.println("inner_method....run... " + inner_filed );
}
}
// 外部類成員方法
public void outer_method(){
System.out.println("outer_method....run... " + outer_filed );
}
}
// 測驗類
public class InnerDemo {
public static void main(String[] args) {
// 創建內部類物件
Outer.Inner oi = new Outer.Inner();
// 呼叫內部類方法
oi.inner_method();
}
}
靜態成員內部類的靜態方法
//外部類
class Outer {
// 外部類成員變數
private String outer_filed = "我是外部類成員變數";
//被靜態的成員內部類
static class Inner {
// 內部類成員變數
private String inner_filed = "我是內部類成員變數";
//內部類的成員方法
public static void static_inner_method() {
System.out.println("靜態內部類的靜態成員方法static_inner_method....run... " );
}
}
}
// 測驗類
public class InnerDemo {
public static void main(String[] args) {
// 直接使用內部類名訪問
Outer.Inner.static_inner_method();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/500054.html
標籤:Java
上一篇:代碼生成器
下一篇:java中集合的簡介說明
