gpt4 book ai didi

java - 使用继承的可链接 getter/setter 的正确实现是什么? ( java )

转载 作者:行者123 更新时间:2023-12-01 13:25:42 46 4
gpt4 key购买 nike

我想用 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...");
}
}

最佳答案

您的代码可以用 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 的任何子类。

关于java - 使用继承的可链接 getter/setter 的正确实现是什么? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21817256/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com