簡體   English   中英

如何實例化抽象類的內部類-Java

[英]How to instantiate inner class of abstract class - java

考慮

public abstract class Foo{

    ///some code

    class Foo1 extends Foo
    {
        //// some code
    }

    class Foo2 extends Foo
    {
        ///// some code 
    }
}

如何創建內部類的對象?

要實例化嵌套的非靜態(內部)類,您需要一個封閉類的實例。

但是您的封閉類是抽象的,因此無法實例化它。 你該怎么辦?

如果確實需要非靜態嵌套類,則唯一的選擇是擴展抽象類,並使用擴展類的實例實例化內部類。

public abstract class Foo {
    public class Foo1 extends Foo {
    }

    public static class FooImpl extends Foo {
    }

    public static void main(String[] args) {
        Foo foo = new FooImpl();
        Foo1 foo1 = foo.new Foo1();
    }
}

您需要另一個擴展Foo的頂級類:

class Foo3 extends Foo {
  Foo foo;

  Foo3(){
   foo= new this.Foo2();
  }
}

或聲明一個static內部類:

public abstract class Foo{

    ///some code

    class Foo1 extends Foo
    {
        //// some code
    }

    class Foo2 extends Foo
    {
        ///// some code 
    }

    static class Foo3 extends Foo {
      Foo foo;

      Foo3(){
       foo= new this.Foo2();
      }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM