Java中的抽象方法类似于C++中的虚拟方法。
在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();
您需要用抽象方法声明一个抽象类Skel,并在子类中实现它们:
public abstract class Skel {
public void body() {
this.action1();
this.action2();
}
abstract void action1();
abstract void action2();
}
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() {
//..
}
}