【发布时间】:2014-04-02 00:25:44
【问题描述】:
我有一个 java 问题。我想创建一个具有一些抽象方法的抽象类。在抽象类构造函数中,我想调用这些抽象方法。
扩展这个抽象类的类必须实现抽象方法,它们唯一要做的就是在自己的构造函数中调用抽象类的构造函数(使用 super() 关键字)。
如果听起来有点复杂,这里是我想做的一个例子(如果有任何语法错误,我很抱歉,我在记事本中写了这个例子):
public abstract class DarthVader{
public DarthVader() {
System.out.println("Luke, I am your father!");
method1();
method2();
}
public abstract void method1();
public abstract void method2();
}
...
public class Jedi extends DarthVader {
public Jedi() {
super();
}
public void method1() {
System.out.println("I am a true jedi");
}
public void method2() {
System.out.println("Prepare to die!");
}
}
...
public class Sith extends DarthVader {
public Sith() {
super();
}
public void method1() {
System.out.println("Hello dad");
}
public void method2() {
System.out.println("Sith Lords Rule!");
}
}
所以,我希望子类的唯一责任是:
1) 抽象方法的实现
2) 调用超级构造器(我不希望他们必须决定应该调用哪些方法)
这可能吗?
- PS:如果标题不能反映我想问的问题,请随时提出其他问题!
【问题讨论】:
-
这是一个众所周知的模式,称为“模板方法”dofactory.com/Patterns/PatternTemplate.aspx#_self1
标签: java oop abstract-class super