
本文旨在解决在 Java 中如何从 Hand 类内部调用 Card 类,尤其是在初始化 Hand 对象时传入 Card 对象的问题。文章将详细讲解构造函数的使用,并提供多种解决方案,帮助读者理解对象间的关系和正确的初始化方法。
在 Java 中,当一个类需要使用另一个类的对象时,通常需要在构造函数中接收这些对象,或者在对象创建后通过方法添加。本例中,Hand 类需要包含多个 Card 对象,而 Tester 类希望在创建 Hand 对象时直接传入这些 Card 对象。问题的关键在于 Hand 类缺少一个能够接收多个 Card 对象的构造函数。
以下提供几种解决方案:
1. 添加带参数的构造函数
立即学习“Java免费学习笔记(深入)”;
这是最直接的解决方案。我们需要在 Hand 类中添加一个构造函数,该构造函数接收多个 Card 对象。可以使用可变参数 (varargs) 来简化代码。
import java.util.ArrayList;
public class Hand {
private ArrayList<Card> cards;
public Hand() {
cards = new ArrayList<Card>(); // initialize cards
}
public Hand(Card... initialCards) {
cards = new ArrayList<Card>();
for (Card card : initialCards) {
cards.add(card);
}
}
}在这个例子中,Hand(Card... initialCards) 是一个新的构造函数,它接受可变数量的 Card 对象。Card... initialCards 表示可以传入任意数量的 Card 对象,它们会被封装成一个 Card 数组 initialCards。然后,我们遍历这个数组,将每个 Card 对象添加到 cards 列表中。
现在,Tester 类中的代码就可以正常工作了:
public class Tester {
public static void main(String[] args) {
// No pair
System.out.println("No pair");
Hand noPair1 = new Hand(new Card(10, 3), new Card(3, 0), new Card(13, 2), new Card(5, 1), new Card(14, 3));
System.out.println("\n");
}
}2. 使用默认构造函数并添加 Card 对象
如果不能修改 Hand 类的构造函数,或者希望采用更灵活的方式添加 Card 对象,可以使用默认构造函数创建一个空的 Hand 对象,然后使用 add 方法逐个添加 Card 对象。
首先,在 Hand 类中添加一个 addCard 方法:
import java.util.ArrayList;
public class Hand {
private ArrayList<Card> cards;
public Hand() {
cards = new ArrayList<Card>(); // initialize cards
}
public void addCard(Card card) {
cards.add(card);
}
}然后,在 Tester 类中,使用默认构造函数创建 Hand 对象,并使用 addCard 方法添加 Card 对象:
public class Tester {
public static void main(String[] args) {
// No pair
System.out.println("No pair");
Hand noPair1 = new Hand();
noPair1.addCard(new Card(10, 3));
noPair1.addCard(new Card(3, 0));
noPair1.addCard(new Card(13, 2));
noPair1.addCard(new Card(5, 1));
noPair1.addCard(new Card(14, 3));
System.out.println("\n");
}
}3. (不推荐) 将 cards 字段设置为 public
虽然可以将 Hand 类的 cards 字段设置为 public,然后直接访问并添加 Card 对象,但这是一种不好的做法,因为它破坏了封装性。不建议使用这种方法。
总结与注意事项
通过以上几种方法,我们可以在 Java 中从 Hand 类内部调用 Card 类,并在初始化 Hand 对象时传入 Card 对象。根据实际情况选择最合适的解决方案,可以使代码更加简洁、易懂和健壮。
以上就是在 Java 中从 Hand 类调用 Card 类:构造函数与对象初始化的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号