【问题标题】:Encapsulation, getter returns null or 0封装,getter返回null或0
【发布时间】:2014-02-26 15:06:14
【问题描述】:

我被困在封装上。在我看来,好像我按照规则做了所有事情,但它仍然不起作用。虽然我知道我错过了一些东西。我正在使用 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 (string) 或 0 (int) 好像我都没有设置一样。

我做错了什么??

【问题讨论】:

    标签: java encapsulation


    【解决方案1】:
    private String name;
    
    public void setName(String n){
        n = name;
    }   
    

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

    【讨论】:

      猜你喜欢
      • 2021-05-04
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2020-01-26
      相关资源
      最近更新 更多