1. 程式人生 > 資訊 >阿斯加特首款 DDR5 記憶體上架:16GB×2 套裝 1999 元

阿斯加特首款 DDR5 記憶體上架:16GB×2 套裝 1999 元

在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;
            }
        };
    }
}