[英]In the default constructor initialize attributes
我在做作业时有点卡住了,我很难理解接下来要做什么。 所以我的指示如下:
创建一个名为
Card
的新类。 Constructors from superclass 复选框将在代码中创建一个构造函数存根。在名为
Suit
的新源文件中创建一个枚举类型,其值为NONE
、CLUBS
、HEARTS
、SPADES
、DIAMONDS
。在与
Card
类相同的包中的新源文件中创建一个枚举类型,称为Rank
,其值为JOKER
、TWO
、THREE
、FOUR
、FIVE
、SIX
、SEVEN
、EIGHT
、NINE
、TEN
、JACK
、QUEEN
、KING
、ACE
.在
Card
类中,
A) 创建一个名为rank
的类属性(字段),其类型为Rank
。
B) 创建一个类型为Suit
名为suit
的类属性(字段)。
C) 为这些字段创建 getter 和 setter。 将 setter 设为私有,因为我们只希望构造函数设置卡片Suit
和Rank
(例如,我们不希望程序员或用户设置多个CLUBS
ACE
)。创建一个接受
Suit
和Rank
的构造函数,并使用这些值来设置属性。在默认构造函数中,初始化
suit
和rank
属性。 使用 this 构造函数调用在上一步中创建的构造函数,并使用您选择的值(例如:Rank.ACE
、Suit.CLUBS
)初始化等级和花色。在类的main方法中,构造一个默认的
Card
来演示默认构造函数的初始化。还可以使用
Suit
和Rank
构造函数构造一些额外的卡片。 使用局部变量来保存对象。使用枚举类型中的
toString()
方法,打印创建的每张Card
的Suit
和Rank
。创建一个
Deck
类,该类包含一个字段,该字段是一个包含 54 张卡片的数组(包含)。创建在一个构造
Deck
初始化与标准甲板和两个王牌卡的数组类,使用for
循环,即遍历Suit
和Rank
值,并设定阵列成员与相应的Card
构造函数。 请记住,两个 Jokers 仅作为NONE
套装存在,并且只有 Jokers 使用NONE
套装。 有许多可能的解决方案只创建两个小丑。 我使用了一个迭代器,将它们排除在循环之外,并在开始时单独添加它们。 使用if
语句排除for each
循环中的小丑并在之前或之后添加它们。在
Deck
类中创建一个toString()
方法,使用另一个for
循环通过在每张卡片上调用toString()
方法来打印数组中的所有Card
。 此方法仅通过调用Card
对象上的toString()
来“要求”Card
打印其等级和花色。 在此方法中的任何地方都不应提及Rank
或Suit
。 让Card
的toString()
方法完成工作(委托)。创建一个
main
的方法Deck
,创建一个类Deck
。 然后使用System.out.println()
打印牌组。 这将调用Deck
的toString()
方法,该方法将在每张Card
上调用toString()
,打印整个卡片组。
public class Card {
//Default Constructor
Card (){
}
//Create a class attribute (field) called rank of type Rank.
Rank rank;
//Create a class attribute (field) called rank of type Suit
Suit suit;
//Create an Enumerated Type in a new source file called Suit
public enum Suit{
NONE, CLUBS, HEARTS, SPADES, DIAMONDS
}
//Create an Enumerated Type in a new source file called Rank
public enum Rank{
JOKER, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK,QUEEN,KING, ACE
}
//Getters & Setters for Rank/Suit
//Make the setters private, since we only want the constructor to set the card Suit and Rank
public Rank getRank() {
return rank;
}
private void setRank(Rank rank) {
this.rank = rank;
}
public Suit getSuit() {
return suit;
}
private void setSuit(Suit suit) {
this.suit = suit;
}
//Create a constructor that accepts a Suit and a Rank and use those values to set the attributes.
Card ( Rank Rank, Suit Suit){
suit = Suit;
rank = Rank;
}
public static void main(String[] args) {
}
}
构造函数用于初始化对象的实例。 Setter 用于设置变量的值,getter 返回此值。 看看下面的例子,
public class Test {
//private members of the instance
private String strVariable;
private int intVariable;
//constructor
//constructor sets the values of strVariable and intVariable when a Test object is intialized
public Test(String strVariable, String intVariable) {
this.strVariable = strVariable;
this.intVariable = intVariable;
}
//setter method for setStrVariable
//this will overwrite the value of setStrVariable that was assinged when the object was intilized
public void setStrVariable(String strVariable) {
this.strVariable = strVariable;
}
//getter for the setStrVariable
//this will return the value of setStrVariable
public String getStrVariable() {
return this.strVariable;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.