1. 程式人生 > 其它 >ImportError: cannot import name ‘WordCompleter‘解決辦法

ImportError: cannot import name ‘WordCompleter‘解決辦法

技術標籤:面向物件javajava

內部類

在java中,一個類可以巢狀另一個類

內部類就是在一個類中再建立一個類

如果想要訪問內部類,必須先例項化外部類,再例項化內部類。

public class Outer {
    public void outer(){
        System.out.println("This is outer");
    }
    public  class Inner{
        public void inner(){
            System.out.println("This is inner");
        }
    }
}

上述程式碼就是一個外部類巢狀一個內部類的形式,想要訪問內部類就必須先例項化外部類,再例項化內部類

public class Application {
    public static void main(String[] args) {
        Outer outer = new Outer();
        outer.outer();
        Outer.Inner inner = outer.new Inner();
    }
}


內部類的強大之處在於,他可以訪問外部類的方法和屬性
依舊是上述程式碼,新增屬性等

public class Outer {
    private int id=100000;
    public void outer(){
        System.out.println("This is outer");
    }
    public void packet(){
        //區域性內部類
        class B{

        }
    }
    public  class Inner{
        public void inner(){
            System.out.println("This is inner");
        }
        //獲得外部類的私有屬性
        public void getid(){
            System.out.println(id);
        }
    }
}

建立一個測試類

public class Application {
    public static void main(String[] args) {
        Outer outer = new Outer();
        outer.outer();
        Outer.Inner inner = outer.new Inner();
        inner.inner();
        inner.getid();
    }
}

在這裡插入圖片描述
由此可見,內部類可以直接訪問外部類的方法和屬性

在方法裡定義的類叫做區域性內部類

匿名類

public class Test {
    public static void main(String[] args) {
        //匿名類
        new Apple().eat();
    }
}

class Apple{
    public void eat(){
        System.out.println("這是一個匿名類");
    }
}

在這裡插入圖片描述
建立了類之後,可以不用物件訪問類裡的方法這就是匿名類,他們沒有物件。


寫在最後
想要進大廠就得每天都付出點汗水