如果未在父类中声明匿名类数据成员,我们是否可以访问它们?

时间:2018-11-04 13:48:29

标签: java oop anonymous-class

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,是否有任何方法可以访问匿名类之外的y?

我们仅仅是为了重载,隐藏和覆盖匿名类中的内容而仅声明在Parent类中存在的那些字段和方法吗?

1 个答案:

答案 0 :(得分:0)

匿名代码保持为匿名(如果未分配),也将其视为简单块,因为对于初始化块,您不希望在外部获得值:

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参数更改/添加Parent构造函数以供以后使用

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