我想在Java中编写一个类,它是一个父类,可以从子类中抽象出来。
我希望能够使用此代码,但我不确定Java是否无法实现。
Frodo frodo = new Frodo();
child.addGold(10).goToMordor();
但这个代码不安全吗?
public class Bilbo
{
private int gold;
public Parent()
{
// Does something awesome
}
public Bilbo addGold(int amount)
{
this.gold += gold;
return this;
}
public int getGold()
{
return this.gold;
}
}
// Child class:
public class Frodo extends Bilbo
{
// Does cool stuff
public void goToMordor()
{
System.out.println("Traveling to Mordor...");
}
}
答案 0 :(得分:1)
您的代码可以用Java编写,并且是安全的。虽然你在实施中看起来有点奇怪。考虑:
public class Parent{
private String name;
public Parent setName(String name){
this.name = name;
return this;
}
public String getName(){ return this.name;}
public void print(){
System.out.println("Say my name!");
}
}
public class Child extends Parent{
public void doChildStuff(){
//child stuff.
}
@Override
public void print(){
System.out.println(this.getName());
}
}
Child child = new Child();
//this works as Parent defines print, and setName returns a Parent object.
child.setName("Bill gates").print();
//Compile error, as setName returns Parent, and Parent does not define 'doChildStuff.`
child.setName("Bill Gates").doChildStuff();
你的方法很好,只要知道链接调用不适用于添加新方法的Parent
的任何子类。