gpt4 book ai didi

java - 有没有办法在 Java 中使用单个对象来运行继承的其他类的方法?

转载 作者:行者123 更新时间:2023-12-02 01:11:06 25 4
gpt4 key购买 nike

我遇到了一个问题,要求创建一个对象,在这个例子中,a,每次我运行方法eat时,它都会打印出苹果,香蕉对等,按顺序,然后循环回到苹果。

我很确定我需要创建 3 个类 class apple classbanana classpeer,每个类都继承 classOrder 并且每个都有一个方法 eat()

如果不使用 Java 基本类型、循环、if 语句,而仅使用面向对象的功能,我怎样才能使这段代码成为可能?

Order a = new Order();
//a will change state after each method is called.
a.eat(); // Prints "ate apple"
a.eat(); // Prints "ate banana"
a.eat(); // Prints "ate peer"
a.eat(); // Prints "ate apple"
a.eat(); // Prints "ate banana"
a.eat(); // Prints "ate peer"

最佳答案

由于您的状态是纯数据并且没有任何与之相关的行为,因此我认为完整的状态设计对于这个问题来说是多余的。我建议最简单的方法是使用一个非常基本的循环链表,每个节点都有一个水果。 Order 类只能打印当前节点的数据,然后在每次调用 eat() 时前进到下一个节点。

例如给定一个 NodeOrder 类,如下所示

class Node {
Node next;
String data;

public Node(String data) {
this.data = data;
}
public String getData() {
return data;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
class Order {
Node node;

public Order() {
Node apple = new Node("apple");
Node banana = new Node("banana");
Node pear = new Node("pear");

apple.setNext(banana);
banana.setNext(pear);
pear.setNext(apple);

this.node = apple;
}

public void eat() {
System.out.println(node.getData());
node = node.getNext();
}
}

您将获得所需的行为:

public static void main(String[] args) {
Order a = new Order();
a.eat(); // apple
a.eat(); // banana
a.eat(); // pear
a.eat(); // apple
a.eat(); // banana
a.eat(); // pear
}

关于java - 有没有办法在 Java 中使用单个对象来运行继承的其他类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382316/

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