在父类获取子类属性
在父类中能获取子类的属性吗?一般情况下是不行的,因为孩子尚未出世哪里来的属性。但有时需要在父类处理该类(包含子类)的所有属性,该怎么做 呢,有种方法能解决—— 在父类中将子类的实例引用进来。假设BaseClass 是基类,有个getAll 方法用以获取该类的所有属性。SubClass 继 承子BaseClass ,SSClass 继承自SubClass ,SSClass 的实例调用getAll 方法时获取SSClass 及其父类的所有属性。具 体做法如下:
import java.lang.reflect.Field;
public class BaseClass {
private String a;
private int b;
private final BaseClass bc = setBC();
// public BaseClass() {
// bc = setBC();
// }
private BaseClass setBC() {
return this ;
}
public void getAll() {
Class clazz = this .bc.getClass();
do {
Field[] fields = clazz.getDeclaredFields();
for (Field f : fields) {
System.out.println(f.getName());
}
clazz = clazz.getSuperclass();
} while (clazz != Object.class );
}
}
这里BaseClass bc 就是子类的引用,构造子类SubClass 或SSClass 实例时,调用setBC 方法将子类的引用获得。setBC 中return this 这里的this 是子类的实例,不是父类的 。setBC 也可以在父类构造函数中调用,效果是一样的,如上面代码的注释块。
子类就不用关心任何事了,不管它是否有自己的构造方法:
public class SubClass extends BaseClass {
@ShareObject
private boolean c;
}
public class SSClass extends SubClass {
private String ss;
public SSClass(int i) {
ss = "";
}
}
测试:
@Test
public void get() {
SSClass sc = new SSClass(1);
sc.getAll();
}
输出内容:
ss
c
a
b
bc
附件里com.my.reflect是例子
相关推荐
java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类
java的反射机制操作父类的所有属性和方法。
然后我在子类中想要访问父类的类成员变量,而且这两个类都是只有类成员变量。感觉目前我使用的方法笨一点,就是直接引用父类的名字,感觉这样的方法不灵活,我想找一种方法,可以让子类访问到父类。 我在网上搜索了...
(3)在子类中重写父类的showInfo()方法 (4)声明学生类的对象,调用学生的显示信息的方法。 2、请编码实现动物世界的继承关系: 动物(Animal)具有行为:吃(eat)、睡觉(sleep)、移动(move) 动物包括...
从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. ...
学习Javascript 一个简单的示例,了解Javascript及其概念的工作方式。ES6类和继承ES6-classes.js 如何定义班级 //CODE GOES HERE}```如何定义构造函数 constructor(){ //INITIAL... 如何从父类继承子类 //CODE GOES HER
自动生成readme.md文件 npm run create 说明 instanceof 判断左边的原型是否存在于右边的原型链中 ...子类不能继承父类的私有属性 9.数组排序 冒泡排序 选择排序: 遍历自身以后的元素,最小的元素跟自己
继承允许子类继承父类的方法和属性,同时可以重写父类的方法,从而实现多态。接口则允许不同的类通过实现同一个接口来达到多态的效果。 Java中如何避免空指针异常? 在Java中,可以通过对可能为空的对象进行“非空...
从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. 关联...
从父类继承的属性 2.2.5. 映射实体Bean的关联关系 2.2.5.1. 一对一(One-to-one) 2.2.5.2. 多对一(Many-to-one) 2.2.5.3. 集合类型 2.2.5.4. 用cascading实现传播性持久化(Transitive persistence) 2.2.5.5. ...
—–子类(衍生类)可以直接继承父类中的所有的属性和方法 1、继承—创建实例 定义了三个类,Animal,Dog,Hashiqi;Hashiqi继承Dog方法,Dog继承Animal中的方法。Hahsiqi不仅可以执行Dog里面的方法,也可以执行Animal...
本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法。分享给大家供大家参考,具体如下: public 表示全局的访问权限,类内部外部子类都可以访问; private表示私有的访问权限,只有本...
继承可以使得子类具有父类的各种方法和属性。以免重复输出很多代码。 二、继承的原理 复制父类的方法和属性来重写子类的原型对象。 三、原型链继承 3.1 实现 function Father() { this.text = '1'; } Father....
父类是不能够获得子类派生的一些属性的,但是我们可以把event的类型强制转换成我们自定义的类型就可以获得子类中的属性了. 这样我们使用var evt:*事件类型=*事件类型(event);//强制转换事件类型 var caozuo:string=...
Java中的继承与静态static等的执行先后顺序的面试题 java面试题静态加载顺序构造方法 ...2、调用类的构造方法时先调用父类的构造方法,在调用子类的构造方法 3、类初始化时,先初始化类的属性成员,在执行构造方法。
– 子类(衍生类)可以直接继承父类中的所有的属性和方法 注意事项: a.在创建类时,如果省略了父类,则默认父类为object, object是所有类的父类,所有类都继承自object。 b. isinstance()用来检查一个对象是否...
Spring JdbcTemplate的解析 从JdbcTemplate的继承关系图可以看出,JdbcTemplate类的直接父类是JdbcAccessor,该类为子类提供了一些访问数据库时使用的公共属性。 其主要功能是获取数据库连接,还可以引入对数据库...
pytyhon基础——类与对象(1) 点击即可访问(在另一篇文章中) 一、对象 二、面向对象(oop) 三、类的详解 ...- 子类(衍生类)可以直接继承父类中的所有的属性和方法 注意事项: a.在创建类时,如果省略了
整个层次结构中的所有父类和子类属性都映射到同一个表中,他们的实例通过一个辨别符列(discriminator)来区分。 Plane 是父类。@DiscriminatorColumn 注解定义了辨别符列。对于继承层次结构中的每个类, @...