阿斯加特首款 DDR5 記憶體上架:16GB×2 套裝 1999 元
阿新 • • 發佈:2021-10-21
在Java中允許一個類定義在另一個類的內部,前者稱為內部類,後者稱為外部類。
內部類可以分為:成員內部類(static成員內部類和非static成員內部類)和區域性內部類(方法內、程式碼塊內、構造器內)
成員內部類
作為外部類的成員:
(1)呼叫外部類的結構
(2)可以被static
修飾
(3)可以被4種不同的許可權修飾
作為一個類:
(1)類內可以定義屬性、方法、構造器等
(2)可以被final
修飾,表示此類不能被繼承
(3)可以被abstract
修飾
public class InnerClassTest { public static void main(String[] args) { //建立Dog例項(靜態的成員內部類) Person.Dog dog = new Person.Dog(); dog.show(); //建立Bird例項(非靜態的成員內部類) Person p = new Person(); Person.Bird bird = p.new Bird(); bird.sing(); bird.display("小小鳥"); } } class Person { String name = "小明"; int age; public void eat() { System.out.println("人吃飯"); } //靜態成員內部類 static class Dog { String name; int age; public void show() { System.out.println("你是一條狗"); } } //非靜態成員內部類 class Bird { String name = "麻雀"; public Bird() { } public void sing() { System.out.println("我是一隻小小鳥"); Person.this.eat(); } public void display(String name) { System.out.println(name); //方法的形參 System.out.println(this.name); //內部類屬性 System.out.println(Person.this.name); //外部類的屬性 } } public void method() { //區域性內部類 class AA { } } { //區域性內部類 class BB { } } public Person() { //區域性內部類 class CC { } } }
區域性內部類
public class InnerClassTest1 { public void method() { //區域性內部類 class AA { } } //返回了一個實現了comparable介面的類的物件 public Comparable getComparable(){ //方式1: //建立一個實現了Comparable介面的類:區域性內部類 // class MyComparable implements Comparable{ // @Override // public int compareTo(Object o) { // return 0; // } // } // return new MyComparable(); //方式2: return new Comparable() { @Override public int compareTo(Object o) { return 0; } }; } }