创建一个 Puppy class,名字为私有 属性,getter 和 setter 属性 名为 getName 和 setName。构造函数应该

Create a Puppy class with private property name and both a getter and a setter for that property called getName and setName. The constructor should

JavaScript 不是我的菜,回答这些问题的你们绝对是救星。

创建一个 Puppy class,名字为私有 属性,getter 和 setter 为 属性 命名为 getName和设置名称。构造函数应该带一个参数来初始化私有属性.

我的代码:

public class Puppy {
private String name;

public Puppy(String name) {
  setName(name);
}

public String getName() {
  return Name;
}

public String setName(String name) {
  this.name=name;
}

截图: here

我在回答这个问题时显然漏掉了重要的词'private'。我发布的代码创建了 public 个实例变量。

    class Puppy {
        constructor(n) {
            // private property
            var name = n

            // methods that use private property
            this.getName = () => {return name}
            this.setName = (n) => {name = n}

            // public property
            this.nickname = n
        }

        // methods that use public property
        setNickname(n) { this.nickname = n }
        getNickname() { return this.nickname }
    }

    p = new Puppy("fido")

    console.log("p.name",p.name) // undefined, not accessible
    console.log("p.getName()",p.getName()) // fido
    console.log("p.getNickname()",p.getNickname()) // fido

    console.log("---")

    p.name = "barker" // defines a new property on this instance of Puppy
    console.log("p.name",p.name) // barker
    console.log("p.getName() ",p.getName()) // doesn't change private name fido

    console.log("---")

    p.setName("fuzz") // change private name
    console.log("p.getName()",p.getName()) // fuzz
    console.log("p.getNickname()",p.getNickname()) // fido

    console.log("---")

    p.nickname = "chewy" // set public property directly
    console.log("p.getNickname()",p.getNickname()) // chewy