多层继承中,最后一层如何获得第一层的私有变量

DrugHua 2020-03-06 02:42:24
class A {
private int a =10;
public void printA(){
System.out.println(a);
}
}
class B extends A{}

class C extends B{
public static void main(String[] args) {
在这里写什么能显示A中的a啊?我用super.printA报错
}
}
...全文
55 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nonoas 2020-03-07
  • 打赏
  • 举报
回复
可以通过反射机制获取
DrugHua 2020-03-06
  • 打赏
  • 举报
回复
引用 1 楼 源者鬼道 的回复:
被private修饰的成员变量,或是成员方法,是不对外显示的,只供自己内部调用,如果想要让别人(当然也包括子类)访问,可以再该类中写一个对外公开的方法,比如常见的get/set方法。 就你上边说的,通过super.printA()去调用方法,你是在main()方法中进行编写的,该方法是通过static修饰的,是不存在对象而言的,所有你要是想调用成功,你需要创建一个对应的子类或是直接创建父类进行调用该方法就可。按你那样编写的话,编译器应该会提示编译错误,你可以点击错误提示的红线,有具体的错误说明,你就能很容易的找到错误了。记得结帖呀
找到原因了 学习第五天,所有知识都混在一起,多态,抽象类,接口什么的乱成一团了
源者鬼道 2020-03-06
  • 打赏
  • 举报
回复
被private修饰的成员变量,或是成员方法,是不对外显示的,只供自己内部调用,如果想要让别人(当然也包括子类)访问,可以再该类中写一个对外公开的方法,比如常见的get/set方法。 就你上边说的,通过super.printA()去调用方法,你是在main()方法中进行编写的,该方法是通过static修饰的,是不存在对象而言的,所有你要是想调用成功,你需要创建一个对应的子类或是直接创建父类进行调用该方法就可。按你那样编写的话,编译器应该会提示编译错误,你可以点击错误提示的红线,有具体的错误说明,你就能很容易的找到错误了。记得结帖呀

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧