实现骨架 class 的正确样式是什么?
What is the proper style for implementing a skeleton class?
在 Java 中实现骨架 class 的正确样式是什么?
我所说的骨架是指 class 提供骨架实用程序代码,但需要子class 来实现某些部分。
在 C++ 中,我只是将纯虚拟方法添加到 class 中,但是 Java 对接口和 classes 有严格的区分,所以这不是一个选项。
基本上pattern应该是这样的:
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();
Java 中的抽象方法类似于 C++ 中的虚方法。
你需要声明一个带有抽象方法的抽象class Skel,并在子class:
中实现它们
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() {
//..
}
}
使用抽象 Class 或更好地提取通用接口,以便您 类 被它引用。
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() {
//..
}
}
在 Java 中实现骨架 class 的正确样式是什么?
我所说的骨架是指 class 提供骨架实用程序代码,但需要子class 来实现某些部分。
在 C++ 中,我只是将纯虚拟方法添加到 class 中,但是 Java 对接口和 classes 有严格的区分,所以这不是一个选项。
基本上pattern应该是这样的:
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();
Java 中的抽象方法类似于 C++ 中的虚方法。
你需要声明一个带有抽象方法的抽象class Skel,并在子class:
中实现它们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() {
//..
}
}
使用抽象 Class 或更好地提取通用接口,以便您 类 被它引用。
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() {
//..
}
}