简体   繁体   English

在默认构造函数中初始化属性

[英]In the default constructor initialize attributes

I'm kind of stuck while doing my homework and I'm having a hard time to understand what to do next.我在做作业时有点卡住了,我很难理解接下来要做什么。 So my instructions are as follows:所以我的指示如下:

  1. Create a new class called Card .创建一个名为Card的新类。 The Constructors from superclass check box will create a constructor stub in the code. Constructors from superclass 复选框将在代码中创建一个构造函数存根。

  2. Create an Enumerated Type in a new source file called Suit with the values NONE , CLUBS , HEARTS , SPADES , DIAMONDS .在名为Suit的新源文件中创建一个枚举类型,其值为NONECLUBSHEARTSSPADESDIAMONDS

  3. Create an Enumerated Type in a new source file in the same package as the Card class, called Rank with the values JOKER , TWO , THREE , FOUR , FIVE , SIX , SEVEN , EIGHT , NINE , TEN , JACK , QUEEN , KING , ACE .在与Card类相同的包中的新源文件中创建一个枚举类型,称为Rank ,其值为JOKERTWOTHREEFOURFIVESIXSEVENEIGHTNINETENJACKQUEENKINGACE .

  4. In the class Card ,Card类中,
    A) Create a class attribute (field) called rank of type Rank . A) 创建一个名为rank的类属性(字段),其类型为Rank
    B) Create a class attribute (field) called suit of type Suit . B) 创建一个类型为Suit名为suit的类属性(字段)。
    C) Create getters and setters for these fields. C) 为这些字段创建 getter 和 setter。 Make the setters private, since we only want the constructor to set the card Suit and Rank (we would not want a programmer or user to set more than one ACE of CLUBS for instance).将 setter 设为私有,因为我们只希望构造函数设置卡片SuitRank (例如,我们不希望程序员或用户设置多个CLUBS ACE )。

  5. Create a constructor that accepts a Suit and a Rank and use those values to set the attributes.创建一个接受SuitRank的构造函数,并使用这些值来设置属性。

  6. In the default constructor, initialize the suit and rank attributes.在默认构造函数中,初始化suitrank属性。 Use the this constructor to call the constructor created in the previous step and initialize the rank and suit with a value of your choice (for example: Rank.ACE , Suit.CLUBS ).使用 this 构造函数调用在上一步中创建的构造函数,并使用您选择的值(例如: Rank.ACESuit.CLUBS )初始化等级和花色。

  7. In the main method of the class, construct a default Card to demonstrate the default constructor initialization.在类的main方法中,构造一个默认的Card来演示默认构造函数的初始化。

  8. Also construct a few additional cards using the Suit and Rank constructor.还可以使用SuitRank构造函数构造一些额外的卡片。 Use local variables to hold the objects.使用局部变量来保存对象。

  9. Using the toString() method from Enumerated Types, print the Suit and Rank of each Card created.使用枚举类型中的toString()方法,打印创建的每张CardSuitRank

  10. Create a Deck class that contains a field that is an array of fifty four cards (Containment).创建一个Deck类,该类包含一个字段,该字段是一个包含 54 张卡片的数组(包含)。

  11. Create a constructor on the Deck class that initializes the array of cards with the standard deck and two jokers, using for loops that iterate over the Suit and Rank values and set the array members with the appropriate Card constructor.创建在一个构造Deck初始化与标准甲板和两个王牌卡的数组类,使用for循环,即遍历SuitRank值,并设定阵列成员与相应的Card构造函数。 Remember that the two Jokers only exist as NONE suits and only the Jokers use the NONE suit.请记住,两个 Jokers 仅作为NONE套装存在,并且只有 Jokers 使用NONE套装。 There are many possible solutions for creating only two jokers.有许多可能的解决方案只创建两个小丑。 I used an iterator, left them out of the loop and added them in the beginning, individually.我使用了一个迭代器,将它们排除在循环之外,并在开始时单独添加它们。 Use an if statement to exclude the jokers within a for each loop and add them before or after.使用if语句排除for each循环中的小丑并在之前或之后添加它们。

  12. Create a toString() method in the Deck class, using another for loop to print all the Card s in the array by calling the toString() method on each card.Deck类中创建一个toString()方法,使用另一个for循环通过在每张卡片上调用toString()方法来打印数组中的所有Card This method “asks” the Card to print its rank and suit by only calling toString() on the Card object.此方法仅通过调用Card对象上的toString()来“要求” Card打印其等级和花色。 There should be no reference to Rank or Suit anywhere in this method.在此方法中的任何地方都不应提及RankSuit Let Card 's toString() method do the work (Delegation).CardtoString()方法完成工作(委托)。

  13. Create a main method in the Deck class that creates a Deck .创建一个main的方法Deck ,创建一个类Deck Then print the deck using System.out.println() .然后使用System.out.println()打印牌组。 This will call Deck 's toString() method, which will call toString() on each Card , printing the entire deck.这将调用DecktoString()方法,该方法将在每张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) {

    }



    }

Constructor is used to initialised a instance of a object.构造函数用于初始化对象的实例。 Setters are used to set the values of the variables and getters return this. Setter 用于设置变量的值,getter 返回此值。 Have a look at the example below,看看下面的例子,

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM