мы не можем получить доступ к анонимным членам данных класса, если они не объявлены в родительском? - PullRequest
0 голосов
/ 04 ноября 2018
class Parent{
  String h;
  Parent(String s){
    h = s;
  }
}
public class Child{ 
public static void main(String args[]){
   Parent p = new Parent("fcghj"){          // anonymous class
            private int y = 9;
  };
  System.out.println(p.h);
  System.out.println(p.y);              // error
}
}

Ошибка при отображении: не удается найти символ y в родительском элементе

Есть ли способ доступа к y вне анонимного класса, если он не объявлен в родительском классе?

Можем ли мы объявлять только те поля и методы, которые существуют в классе Parent, только для перегрузки, сокрытия и переопределения в анонимном классе?

1 Ответ

0 голосов
/ 04 ноября 2018

Анонимный код остается анонимным , если не назначен, также рассматривайте его как простой блок, так как для блока инициализации вы не ожидаете получить значение снаружи:

public class Child { 

  {          // initialize block
            int y = 9;
  }
public static void main(String args[]){
   Parent p = new Parent("fcghj");
  System.out.println(p.h);
  System.out.println(y);              // error
}

Вы можете изменить / добавить родительский конструктор с параметром int, чтобы использовать его позже

class Parent{
  String h;
  int y;
  Parent(String s, int y){
    h = s;
    this.y = y;
  }
...