一、概述:
內部類就是在一個類中定義一個類,例如在一個類A的內部定義一個類B,B就被稱為內部類,而A相對的被稱為外部類
內部類的形式:
按照內部類在類中定義的位置不同,可以分為以下兩種形式:
1.在類的成員位置:成員內部類
2.在類的區域位置:區域內部類
定義格式:
public class Outer {
//定義內部類
public class Inter{}
}
?
二、內部類的訪問特點
1.內部類可以直接訪問外部類的成員,包括私有
2.外部類如果要訪問內部類的成員則必須要創建物件
三、成員內部類
成員內部類,外界呼叫時創建物件的格式
格式:外部類名.內部類名 創建的物件名 =外部類物件.內部類物件(此方法針對于成員內部類的修飾符為public時,如果內部類修飾符為privat,此方法無效)
//創建成員內部類物件
Outer.Inter oi=new Outer().new Inter();
oi.show();
}
當內部類修飾符為private 時,我們需要通過外部類的物件進行呼叫方法,此方法直接創建外部類物件即可
public class Outer {
private int num;
//c成員定義內部類
private class Inter{
public void show(){
System.out.println(num);
}
}
public void method(){
Inter i=new Inter();
i.show();
}
}
?
四、區域內部類
就是寫在成員方法里面的類,外界無法直接呼叫,需要在方法內創建物件并使用
該類可以直接訪問外部類的成員,也可以訪問方法內的區域變數
定義格式:
public class Outer {
//定義私有成員變數
private int num = 12;
//定義成員方法
public void method() {
//定于區域內部類
class Inter {
public void show() {
System.out.println(num);
}
}
//呼叫區域內部類的方法需要創建物件,間接呼叫
Inter i=new Inter();
i.show();
}
}
五、匿名內部類(區域內部類的一種形式)
前提條件:存在一個類或者介面,這里的類可以是具體類也可以是抽象類
格式:
new 類名/介面名(){
重寫方法;
}
//new 類名/介面名(){
?
//重寫方法;
?
//}
new Inter(){
public boid show(){
?
}
}
本質上是一個繼承了該類或者實作了該介面的子類匿名物件
//創建匿名內部類
new Inter(){
@Override
public void show() {
System.out.println("匿名內部類");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/445565.html
標籤:其他
上一篇:人生苦短,我用JRebel
