Java实例变量

Java实例变量,java,Java,我正在使用Codecademy学习Java。我正试图编写代码,使一个对象在这个例子中,一个3岁的狗名为Spike,在n条腿上运行,其中n=年龄。我尝试了暴力调试,但没有成功。我应该如何更改行如何更改以使代码正常工作 class Dog { public Dog(int dogsAge) { int age = dogsAge; } public void bark() { System.out.println("Woof!");

我正在使用Codecademy学习Java。我正试图编写代码,使一个对象在这个例子中,一个3岁的狗名为Spike,在n条腿上运行,其中n=年龄。我尝试了暴力调试,但没有成功。我应该如何更改行如何更改以使代码正常工作

class Dog {
    public Dog(int dogsAge) {
        int age = dogsAge;
    }

    public void bark() {
        System.out.println("Woof!");
    }

    public void run(int feet) {
        System.out.println("Your dog ran " + feet + " feet!");
    }

    public static void main(String[] args) {
        Dog spike = new Dog(3);
        spike.bark();
        spike.run(this.age); // How to change this?
    }
}
尝试创建变量int age并在构造函数中初始化它,如下所示:

  class Dog {
  int age;
 public Dog(int dogsAge){
    this.age = dogsAge;
  }
尝试创建变量int age并在构造函数中初始化它,如下所示:

  class Dog {
  int age;
 public Dog(int dogsAge){
    this.age = dogsAge;
  }
你们班需要 -为年龄变量添加存储 -在construcor中设置该值 -为您的主要功能提供访问它的方式

class Dog {
 private int age; //storage for the age value within the instance
 public Dog(int dogsAge){
   this.age = dogsAge; // set the value
 }
 // provide a way to access the age
 public int getAge() {
   return this.age;
 }
 public void bark(){
   System.out.println("Woof!");

 }
 public void run(int feet) {
   System.out.println("Your dog ran " + feet + " feet!");
 }


 public static void main(String[] args) {
  Dog spike = new Dog(3);
  spike.bark();
  spike.run(spike.getAge()); // retrieve the age and use it
 }

}
你们班需要 -为年龄变量添加存储 -在construcor中设置该值 -为您的主要功能提供访问它的方式

class Dog {
 private int age; //storage for the age value within the instance
 public Dog(int dogsAge){
   this.age = dogsAge; // set the value
 }
 // provide a way to access the age
 public int getAge() {
   return this.age;
 }
 public void bark(){
   System.out.println("Woof!");

 }
 public void run(int feet) {
   System.out.println("Your dog ran " + feet + " feet!");
 }


 public static void main(String[] args) {
  Dog spike = new Dog(3);
  spike.bark();
  spike.run(spike.getAge()); // retrieve the age and use it
 }

}

Dog.java:25:错误:非静态变量无法从静态上下文spike.runthis.age引用此变量;//如何更改此选项?^1 errorDog.java:25:error:非静态变量无法从静态上下文spike.runthis.age引用该变量;//如何更改此选项?^1错误通过在构造函数中声明变量age,它仅在构造函数中可见。这是作用域的一个例子。通过在构造函数中声明变量age,它只在构造函数中可见。这是一个作用域的例子。如果我不添加public int getAge{return This.age;},变量dogsAge会发生什么?如果没有dogsAge函数,它是完全不可访问的吗?在我上面的代码中,它是不可访问的,因为主函数在Dog类中。但是,如果主函数在另一个类中,那么如果没有getAge,它将无法访问,因为'age'属性被声明为'private'。您可以在不使用getAge函数的情况下,通过使用“public int age”来访问它,但是这通常被认为是不好的做法。如果我不添加public int getAge{return this.age;},变量dogsAge会发生什么情况?如果没有dogsAge函数,它是完全不可访问的吗?在我上面的代码中,它是不可访问的,因为主函数在Dog类中。但是,如果主函数在另一个类中,那么如果没有getAge,它将无法访问,因为'age'属性被声明为'private'。您可以在不使用getAge函数的情况下,通过使用“public int age”来访问它,但是这通常被认为是不好的做法。