"это."объявления в Java - PullRequest
       3

"это."объявления в Java

0 голосов
/ 23 сентября 2019

Следующий пример кода был приведен в классе в качестве примера.Я очень смущен относительно того, что это.переменная печатается в конце:

System.out.println("Hurricane Name: " + this.name);
System.out.println("Current Speed: " + this.currentSpeed);

Насколько я понимаю, это.печатает переменную поля, объявленную внутри класса Hurricane, но не переменные конструктора (параметры) внутри метода setName ().

Кроме того, я приветствую любые исправления, если я допустил ошибку в наименовании определенных переменных, я все еще изучаю определения и имена.

Заранее спасибо.

public class Hurricane
{
   private String name;
   public int currentSpeed;

   public Hurricane()
   {
      System.out.println("NEW HURRICANEEEE COMIN THROUGH!!!");
      System.out.println();
   }

   public void setName(String name)
   {
      if (name.contains("DOOM"))
      {
         this.name = "(invalid name)";
         return;
      }

      this.name = name;
   }

   public String getName()
   {
      return name;
   }

   public void printInfo()
   {
      System.out.println("Hurricane Name: " + this.name);
      System.out.println("Current Speed: " + this.currentSpeed);
      System.out.println();
   }
}

1 Ответ

0 голосов
/ 23 сентября 2019

Вот несколько примеров, которые показывают его использование.


    public class MyClass {

       String name;

       public MyClass(String name) {
          // assign local argument to instance field
          this.name = name;
       }


       public static void main(String[] args) {
          new MyClass("MyClass").start();
       }
       public void start() {
          // both refer to the same instance field
          System.out.println(name);
          System.out.println(this.name);
          {
             System.out.println("Scope change");
             // local vs field conflict
             String name = "foo";
             System.out.println(name);

             // must use this to get instance field name 
             System.out.println(this.name);
          }
          InnerClass ic = new InnerClass("InnerClass");
          ic.showNames();
       }

       class InnerClass {
          String name;
          InnerClass(String name) {
             this.name = name;
          }

          void showNames() {
             // by prefixing outer class to this you can get outer class name
             System.out.println("InnerClass name = " + name);
             System.out.println("MyClass name = " + MyClass.this.name);
          }
       }
    }


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...