繁体   English   中英

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

[英]In the default constructor initialize attributes

我在做作业时有点卡住了,我很难理解接下来要做什么。 所以我的指示如下:

  1. 创建一个名为Card的新类。 Constructors from superclass 复选框将在代码中创建一个构造函数存根。

  2. 在名为Suit的新源文件中创建一个枚举类型,其值为NONECLUBSHEARTSSPADESDIAMONDS

  3. 在与Card类相同的包中的新源文件中创建一个枚举类型,称为Rank ,其值为JOKERTWOTHREEFOURFIVESIXSEVENEIGHTNINETENJACKQUEENKINGACE .

  4. Card类中,
    A) 创建一个名为rank的类属性(字段),其类型为Rank
    B) 创建一个类型为Suit名为suit的类属性(字段)。
    C) 为这些字段创建 getter 和 setter。 将 setter 设为私有,因为我们只希望构造函数设置卡片SuitRank (例如,我们不希望程序员或用户设置多个CLUBS ACE )。

  5. 创建一个接受SuitRank的构造函数,并使用这些值来设置属性。

  6. 在默认构造函数中,初始化suitrank属性。 使用 this 构造函数调用在上一步中创建的构造函数,并使用您选择的值(例如: Rank.ACESuit.CLUBS )初始化等级和花色。

  7. 在类的main方法中,构造一个默认的Card来演示默认构造函数的初始化。

  8. 还可以使用SuitRank构造函数构造一些额外的卡片。 使用局部变量来保存对象。

  9. 使用枚举类型中的toString()方法,打印创建的每张CardSuitRank

  10. 创建一个Deck类,该类包含一个字段,该字段是一个包含 54 张卡片的数组(包含)。

  11. 创建在一个构造Deck初始化与标准甲板和两个王牌卡的数组类,使用for循环,即遍历SuitRank值,并设定阵列成员与相应的Card构造函数。 请记住,两个 Jokers 仅作为NONE套装存在,并且只有 Jokers 使用NONE套装。 有许多可能的解决方案只创建两个小丑。 我使用了一个迭代器,将它们排除在循环之外,并在开始时单独添加它们。 使用if语句排除for each循环中的小丑并在之前或之后添加它们。

  12. Deck类中创建一个toString()方法,使用另一个for循环通过在每张卡片上调用toString()方法来打印数组中的所有Card 此方法仅通过调用Card对象上的toString()来“要求” Card打印其等级和花色。 在此方法中的任何地方都不应提及RankSuit CardtoString()方法完成工作(委托)。

  13. 创建一个main的方法Deck ,创建一个类Deck 然后使用System.out.println()打印牌组。 这将调用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) {

    }



    }

构造函数用于初始化对象的实例。 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.

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