Java中4種類型的內部類
阿新 • • 發佈:2018-12-26
在Java中有4種不同型別的內部類可以使用。下面給出它們的名稱和例子。
1.靜態巢狀類(Static Nested Classes)
輸出:Inner class reference is: [email protected]class Outer { static class Inner { void go() { System.out.println("Inner class reference is: " + this); } } } public class Test { public static void main(String[] args) { Outer.Inner n = new Outer.Inner(); n.go(); } }
2.成員內部類(Member Inner Class)
成員類是特定於例項的。它可以訪問所有方法,欄位和外部類本身的引用。輸出:public class Outer { private int x = 100; public void makeInner(){ Inner in = new Inner(); in.seeOuter(); } class Inner{ public void seeOuter(){ System.out.println("Outer x is " + x); System.out.println("Inner class reference is " + this); System.out.println("Outer class reference is " + Outer.this); } } public static void main(String [] args){ Outer o = new Outer(); Inner i = o.new Inner(); i.seeOuter(); } }
Outer x is 100
Inner class reference is [email protected]
Outer class reference is [email protected]
3.區域性方法內部類(Method-Local Inner Classes)
輸出:x is outerpublic class Outer { private String x = "outer"; public void doStuff() { class MyInner { public void seeOuter() { System.out.println("x is " + x); } } MyInner i = new MyInner(); i.seeOuter(); } public static void main(String[] args) { Outer o = new Outer(); o.doStuff(); } }
public class Outer {
private static String x = "static outer";
public static void doStuff() {
class MyInner {
public void seeOuter() {
System.out.println("x is " + x);
}
}
MyInner i = new MyInner();
i.seeOuter();
}
public static void main(String[] args) {
Outer.doStuff();
}
}
輸出:x is static outer
4.匿名內部類(Anonymous Inner Classes)
當您需要給一個GUI應用程式視窗小部件加一個動作監聽器時,匿名內部類就會經常被用到。button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
comp.setText("Button has been clicked");
}
});
你可能也會喜歡: