-2

在 Java 中实现骨架类的正确风格是什么?

骨架是指提供骨架实用程序代码的类,但需要一个子类来实现某些部分。

在 C++ 中,我只会将纯虚拟方法添加到类中,但 Java 对接口和类有严格的区分,所以这不是一个选项。

基本上模式应该是这样的:

class Skel { 
  void body() {
    this.action1();
    this.action2();
  }
};

class UserImpl : extends A {
   void action1() {
      impl;
   }

   void action2() {
      impl;
   }
}

/* ... snip ... */

Skel inst = new UserImpl();

/* ... snip ... */

inst.body();
4

2 回答 2

3

Java 中的抽象方法类似于 C++ 中的虚拟方法。

你需要用抽象方法声明一个抽象类Skel,并在子类中实现它们:

public abstract class Skel {

    public void body() {
        this.action1();
        this.action2();
    }

    abstract void action1();
    abstract void action2();

}
于 2015-11-30T09:23:00.947 回答
0
abstract class Skel {abstract void action1();
    abstract void action1();
    abstract void action2();
    public void body() {
        action1();
        action2();
    }
}

class UserImpl extends Skel {
    @Override
    public void action1() {
        //...
    }
    @Override
    public void action2() {
        //..
    }
}

使用抽象类甚至更好地提取公共接口,以便它引用您的类。

interface CommonInterface {
    void action1();
    void action2();
    void body(); 
}

abstract class Skel implements  CommonInterface{

    public void body() {
        action1();
        action2();
    }
}

class UserImpl extends Skel {

    @Override
    public void action1() {
        //...
    }

    @Override
    public void action2() {
        //..
    }
}
于 2015-11-30T09:37:32.690 回答