Область видимости (класс в классе)

278
09 февраля 2017, 00:03

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

 public class A { 
      private B b; 
      private A() { 
           b = new B(); 
      } 
      private String method() { 
           b.getField(); // 1 
      } 
 } 
 class B extends JTabbedPane { 
      private String f; 
      public String getField() { 
           return f; 
      } 
 } 

Проблема в строке 1, метод класса В.getField недоступен.

Error:(146, 37) java: cannot find symbol symbol: method getField() location: variable pCommon of type javax.swing.JTabbedPane

Answer 1

Поле объявляется примерно так:

[модификатор] [статик/не статик] тип имя;

то есть минимум надо так

 private B b;

У конструктора должны быть скобки:

private A() {
    // smth
}

Ну и метод getField недоступен потому, что в "конструкторе" объявляется одна переменная b, доступная только в его области видимости, а в method пытаешься обратиться к методу совсем непонятной переменной b нигде даже не объявленной.

Также у метода method не указан тип выходного параметра, хотя бы void например.

В классе B — аналогично с методом.

Как это вообще работает — неизвестно.

Answer 2

Вопрос решен.

Моя вина, в тексте вопроса все написано верно, а в реальном коде, в классе А, вместо объявления переменной

private B b;

написал ссылку на базовый класс

private JTabbedPane b;

соответственно новые методы не были доступны.
Всем откликнувшимся спасибо.

READ ALSO
Чем реализовать изменяемый график в JavaFX

Чем реализовать изменяемый график в JavaFX

Требуется сделать следующий график

400
Как сделать чтоб отпрвялся запрос через определенный интервал ??7

Как сделать чтоб отпрвялся запрос через определенный интервал ??7

Есть метод myMethod(); надо его запускать через определенное время допустим 45-60 секунд ,пытался сделать через

317
Java аннотации - реализация бизнес логики

Java аннотации - реализация бизнес логики

Хочу написать свои аннотации, так как возникло несколько идей, но не могу понять как это сделатьВроде легко, но вопрос: как к аннотации прикрепить...

470
ошибка java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

ошибка java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

Внезапно перестал работать программа выдает ошибку

444