作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下类(class)
class A{
private String name;
private int value;
public A(String n, int v){
name = n;
value = v;
}
public void print(){
System.out.println(name + " " + value);
}
}
class B extends A{
public B(String n, int v){
super(n,v);
}
}
当我说 B b = new B("new object", 1);
它创建了一个 B 类型的对象,名称 = 新对象,值 = 1。并在调用 print() 方法时打印相同的对象。但是,尽管它具有这些值,但我无法通过 B 的方法访问它们。是封装的限制还是继承的限制。
因为同样的情况出现在我面前,我需要扩展一个第三方类和这个类中的属性,这些属性是私有(private)的,但在扩展类中需要,并且私有(private)成员没有 setter 和 getter .那我该怎么办?
最佳答案
如果变量是private
,那么它们就应该如此——类的设计者已经决定不需要它们。
但是,那个类的设计者可能错了。首先假设这不是一件好事,但如果您真的需要它们,您可以调用:
Field field = getClass().getSuperclass().getDeclaredField("privateFieldName");
field.setAccessible(true);
Object value = field.get(this);
关于java - 第三方类扩展难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274938/
我想根据用户在第一个下拉框中选择的值来填充第二个下拉框。这是我到目前为止所做的: 在 PHP 文件中: function displayDropDown() { $table_tester =
我需要你的帮助。 我有一个具有如下架构的数据库: 团队: ID 姓名 fundation_date 匹配: ID 日期 id_local_team(团队的外键) id_visit_team (团队的外
我是一名优秀的程序员,十分优秀!