內部類即在乙個類的內部定義了其他類的情況.
範例1:
class outer
} public void fun()
}public class testdemo
}
以上程式的執行過程:例項化物件 out→呼叫方法→呼叫方法例項化內部的物件→呼叫內部的方法
執行結果:
由以上程式可以看出,內部類的最大缺點是破壞了程式結構,使得本應該只含有屬性和方法的類中又多出了乙個類,但是,內部類的最大優點就是:可以方便地訪問外部類的私有操作,當然也可以由外部類方便地訪問內部類的私有操作,不再需要setter和getter.
範例2:
class outer
public void fun()
}public class testdemo
}
執行結果:
標準:當訪問類中的屬性時前面應該加上"this.",但是對於以上的程式,內部類訪問外部屬性的時候,使用"this."只能表示內部類的當前物件,所以,如果想要表示出外部類的當前物件,應該使用"外部類.this"來表示.
範例3:
class outer
} public void fun()
}public class testdemo
}
執行結果:
以上程式是通過外部類的方法操作了內部類.那麼如何在其他不同的類中訪問內部類呢?
首先我們檢視一下以上程式的*.class檔案:
可以看到,內部類的*.class檔案的名稱為outer$inner.class
$ 是在檔案中的表示,換到程式中" $ "表示" . ",所以內部類的類名稱為outer.inner,由此可以得出在外部例項化內部類物件的操作格式:
外部類.內部類 內部類物件 = new 外部類().new 內部類() ;
範例4:
class outer }}
public class testdemo
}
執行結果:
如果,內部類不想被外部使用,可以使用private將其定義為私有內部類(僅僅內部類外層的那個外部類可以使用).
錯誤例:
class outer }}
public class testdemo
}
執行結果:
定義內部類時,也可以使用static定義,但是使用了static定義的內部類表示"外部類",但是,它只能訪問外部類中的static型別的操作.
class outer }}
public class testdemo
}
執行結果:
理論上,內部類可以定義在類的任何位置上,以下是在方法中定義內部類.
範例7:
class outer
} inner in = new inner() ;
in.print() ; }}
public class testdemo
}
當定義在方法中的內部類要訪問方法的引數或者是方法中定義的變數時,這些引數或變數前一定要增加乙個final關鍵字,否則無法呼叫.
範例8:
class outer
} inner in = new inner() ;
in.print() ; }}
public class testdemo
}
執行結果:
九 物件導向 內部類
乙個類定義在另乙個類的內部,前者稱之為內部類,後者稱之為外部類。內部類一般用在定義它的類和語句塊內,在外部使用它時需要給出完整的名稱,且不可以與外部類的名稱相同。使用場景為當乙個事物的內部,還有乙個部分需要乙個完整的結構進行描述,而這個內 部的完整的結構又只為外部事物提供服務,那麼整個內部的完整結構...
java物件導向(內部類)
內部類 將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類 內建類,巢狀類 訪問特點 1,內部類可以直接訪問外部類中的成員,包括私有成員.2,而外部類要訪問內部類中的成員必須要建立內部類的物件.內部類的訪問規則 1,內部類可以直接訪問外部類的成員,包括私有.之所可以直接訪問外部類中的成員,是因為...
Java物件導向 匿名 內部類
歡迎光臨新長城部落格中心 物件導向 內部類 將乙個類定義在另乙個類的裡面,對裡面那個類就稱為內部類 內建類,巢狀類 簡單的說就是類中還有乙個類,就是內部類。位元組碼檔名 外部類名 內部類名.class。內部類訪問特點 1 內部類可以直接訪問外部類中的成員,包括私有成員。2 而外部類要訪問內部類中的成...