Как методы Java используют, кто передал их в них - PullRequest
1 голос
/ 03 апреля 2012

Извините, если этот заголовок не описывает проблему должным образом, но я не знал, как ее описать.

У меня есть метод с именем changeToWhite(), который можно вызвать на пьесе. например Piece.changeToWhite()

но для того, чтобы я смогла изменить кусок на белый, мне нужен доступ к части, поэтому я решил передать ее в качестве аргумента например Piece.changeToWhite(Piece)

Передача в качестве аргумента кажется ненужной.

Функция toUpperCase() делает это как-то, например. someString.toUpperCase()

Как я могу это сделать?

Ответы [ 2 ]

9 голосов
/ 03 апреля 2012

Если вы определяете changeToWhite в классе Piece, то в экземпляре вы можете использовать this, чтобы получить ссылку на текущий объект.Что-то вроде:

class Piece {
    private String color;
    ...
    public void changeToWhite() {
       this.color = 'white';
    }
}

Обратите внимание, что когда вы определяете метод для класса, вам нужно иметь экземпляр для вызова методов.

Итак

Piece piece1 = new Piece();
piece1.changeToWhite();

Обратите внимание, что стандарт Java должен использовать верхний регистр для определения класса (например, Piece) и регистр верблюда (например, changeToWhite) для методов и полей экземпляра.

ДРУГОЙ способ сделать это - использовать статический метод.В этом случае метод принадлежит классу, он не имеет this контекста, как методы экземпляра, делают

class Piece {
   private String color; // instance field


   /**
       Takes a piece instance as an argument, and operates on that.
    */
   private static void changeToWhite(Piece piece) {
      piece.setColor('white'); // assume setColor exists
   }

}

, но первый способ предпочтительнее.

3 голосов
/ 03 апреля 2012

Это разница между статическими и экземплярами методов.В вашем примере вызов Piece.changeToWhite() является статическим методом, но вы пытаетесь получить доступ к переменным экземпляра (тип элемента).

У вас есть два варианта:

  1. Делать какВы описываете и передаете часть, которую хотите изменить.
  2. Сделайте метод экземпляра, а затем сделайте что-то вроде Piece p1 = new Piece(); p1.changeToWhite();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...