Не удается найти переменную (проблемы наследования) - PullRequest
0 голосов
/ 03 апреля 2011

Хорошо, у меня проблема.

У меня есть два класса: ImageHandler и PixelHandler.

В своем классе ImageHandler я объявил:

public class ImageHandler{
     private static BufferedImage myImage;
     ...

ИЯ пытаюсь повторно выполнить myImage в PixelHandler:

public class PixelHandler{
     private int [] pix;

     public int checkNumOfWindows(){
         for(int x= 0; x < 1280; x++){
              for(int y =0; y < 800; y++){
                  pix = myImage.getRGB(x, y, 6, 7, experimentalPattern, 0, 6);
              }
         }
     }
     ...

При попытке получить сообщение об ошибке:

Не удается найти символ - переменная myImage

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2011

Вы хотели расширить класс ImageHandler?

public class PixelHandler extends ImageHandler {
   /* ... */
}

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

protected static BufferedImage myImage;
0 голосов
/ 03 апреля 2011

private переменные являются частными для класса (а также не наследуются), что означает, что вы не можете получить к ним доступ из другого класса. Если PixelHandler является расширением обработчика изображений, вы должны объявить myImage как protected, а не private. Иначе, вы должны получить доступ к этой переменной, используя ImageHandler.myImage или, лучше, объявить статический метод в ImageHandler, чтобы получить эту переменную.

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