考虑以下示例情况:
public abstract class Parent
{
private ByteBuffer buffer;
/* Some default method implementations, interacting with buffer */
public static Parent allocate(int len)
{
// I want to provide a default implementation of this -- something like:
Parent p = new Parent();
p.buffer = ByteBuffer.allocate(len);
return p;
}
}
public class Child extends Parent
{
/* ... */
}
public class App
{
public static void main(String[] args)
{
// I want to ultimately do something like:
Child c = Child.allocate(10);
// Which would create a new child with its buffer initialized.
}
}
显然,我不能这样做(new Parent()
),因为 Parent 是抽象的,但我真的不想要Parent。我希望这个方法自动提供给子类。
我宁愿使用“静态构造函数”方法,.allocate()
而不是添加另一个可见的构造函数。
我有什么方法可以将此默认实现放入Parent
类中,还是每个子类都必须包含相同的代码?
我想另一种选择是从父级中剥离“抽象”,但抽象适合——我从不想要父类型的对象。
提前致谢。