java - 在匿名类外部包中访问类的成员函数
问题描述
我在一个包中有一个带有数据成员的类。现在在另一个包中编写该类的匿名类。
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. 如何在编写匿名类时访问数据而不将数据的访问说明符更改为公共。
解决方案
当我们在 java 中声明/创建一个匿名类时。它是一个新的未知(因为编译器给出了名称)类扩展了您重新定义的类(在我们的例子中是 A 类)。指定的访问修饰符是 default / package-private 。这里继承存在,子类不能访问父类的私有成员。因此它是不可访问的。在简单的重写打印函数将在新类中,字符串数据成员将出现在其父类中。要访问它应该转换为受保护的
推荐阅读
- javascript - 在 Ionic App 中显示来自 Firebase 实时数据库的数据
- reactive-programming - Spring WebFlux:如何将文件存储在 R2DBC 数据库(PostgreSQL)中?
- django - 即使所有配置文件都正确,gunicorn 服务也没有启动
- python - 如何将句子转换为类别?
- java - JavaFX 将画布拉伸到尺寸
- c++ - 在 neovim 中编译/运行文件的问题
- loops - 带有数字增量的 Ansible 双循环
- shell - 使用 Windows 终端和 Vscode 终端时如何运行单独的鱼功能
- c# - 为什么 VisualStateManager.GoToState 不适用于 WPF 中的控件?
- angular - Mat 对话框关闭在 Angular 11、Meterial 11 上不起作用