簡體   English   中英

使用實現接口的抽象類(Java)

[英]Using abstract class that implements an interface (Java)

我有這個界面

public interface IAnything {
  void m1();
  void m3();
}

以及實現此接口的兩個抽象類:

public abstract class AbstractThing1 implements IAnything {
  public void m1() {}
  public void m3() {}
}

public abstract class AbstractThing2 implements IAnything {
  public void m1() {}
  public void m3() {}
}

在我的代碼中的某個地方,我想調用一個function doSomething(kindOfAbstractClass) ,該function doSomething(kindOfAbstractClass)執行m1()m3()以及其他作業,具體取決於kindOfAbstractClass。

如何定義和調用doSomething() 我這樣做了,但是沒有用。 謝謝

private <T extends IAnything> void doSomething(T kindOfAbstractClass) {
...
kindOfAbstractClass.m1();
kindOfAbstractClass.m3();
...
}

doSomething(AbstractThing1.class);

您的問題是您要提供類類型而不是實例作為參數來進行操作

看看下面修改過的代碼:

public class MyClass {


    void doIt(){
        doSomething(new ConcreteThing());       
    }

    private <T extends IAnything> void doSomething(T kindOfAbstractClass) {

            kindOfAbstractClass.m1();
            kindOfAbstractClass.m3();
    }

}


interface IAnything {
      void m1();
      void m3();
}

abstract class AbstractThing1 implements IAnything {
      public void m1() {}
      public void m3() {}
}


class ConcreteThing extends AbstractThing1{

}

嘗試這個:

private void doSomething(IAnything  kindOfAbstractClass) {
...
kindOfAbstractClass.m1();
kindOfAbstractClass.m3();
...
}

暫無
暫無

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

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