我坚持封装。在我看来,我似乎是按照规则进行了所有操作,但仍然无法正常工作。虽然我知道我想念一些东西。我正在使用Eclipse。

我希望通过创建一副标准的52张卡片并尝试一些新知识来进行一些练习。我在deckOfCard包中创建了Card类:

package deckOfCards;

public class Card {

    private int value;
    private String name;

    public void setName(String n){
        n = name;
    }
    public String getName(){
        return name;
    }
    public void setValue(int v){
        v = value;
    }
    public int getValue(){
        return value;
    }
}


然后,我上了一个主叫Deck的课程,在那里我制作了全部52张卡片(我敢肯定有一种简便快捷的方法,但是我还没有)

package deckOfCards;

public class Deck {

    public static void main(String[] args) {
        Card h1 = new Card();
        h1.setValue(13);
        h1.setName("Ace of Hearts");

        Card h2 = new Card();
        h2.setValue(1);
        h2.setName("Two of Hearts");
.
.
all the way to
.
.

        Card d12 = new Card();
        d12.setValue(11);
        d12.setName("Queen of Diamonds");

        Card d13 = new Card();
        d13.setValue(12);
        d13.setName("King of Diamonds");


但是当我尝试在任何卡的Deck类中输出任何值或名称(System.out.println(h1.getName())或System.out.println(h1.getValue()))时,我得到的是null(字符串)或0(int),好像我也没有设置。

我究竟做错了什么??

最佳答案

private String name;

public void setName(String n){
    n = name;
}


您正在使用var(n)类覆盖本地(name)。交换它们(name = n)。

关于java - 封装,getter返回null或0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22045338/

10-12 05:10