首页 > 解决方案 > 在匿名类外部包中访问类的成员函数

问题描述

我在一个包中有一个带有数据成员的类。现在在另一个包中编写该类的匿名类。

package a;
public class A{
    String data;
    void print(){
       System.out.print(data);
    }
}

并在另一个包中现在制作 A 的匿名类。

    package B;
    import a;
    class B{
    public void static main(String[] args){
        A anoy = new A(){
            void print(){
                // overriding print
                System.out.print(data + " overrided");
          }
     }
    }
   }

现在在这里我得到一个错误 data is not public in class A. 如何在编写匿名类时访问数据而不将数据的访问说明符更改为公共。

标签: javapackageanonymous-class

解决方案


当我们在 java 中声明/创建一个匿名类时。它是一个新的未知(因为编译器给出了名称)类扩展了您重新定义的类(在我们的例子中是 A 类)。指定的访问修饰符是 default / package-private 。这里继承存在,子类不能访问父类的私有成员。因此它是不可访问的。在简单的重写打印函数将在新类中,字符串数据成员将出现在其父类中。要访问它应该转换为受保护的


推荐阅读