`

在父类获取子类属性

 
阅读更多

在父类获取子类属性

在父类中能获取子类的属性吗?一般情况下是不行的,因为孩子尚未出世哪里来的属性。但有时需要在父类处理该类(包含子类)的所有属性,该怎么做 呢,有种方法能解决—— 在父类中将子类的实例引用进来。假设BaseClass 是基类,有个getAll 方法用以获取该类的所有属性。SubClass 继 承子BaseClassSSClass 继承自SubClassSSClass 的实例调用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 就是子类的引用,构造子类SubClassSSClass 实例时,调用setBC 方法将子类的引用获得。setBCreturn 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方法,包括子类父类

    java反射获取所有属性,获取所有get方法,包括子类父类,以及包括List集合类

    java反射操作父类所有属性和方法

    java的反射机制操作父类的所有属性和方法。

    Python 实现子类获取父类的类成员方法

    然后我在子类中想要访问父类的类成员变量,而且这两个类都是只有类成员变量。感觉目前我使用的方法笨一点,就是直接引用父类的名字,感觉这样的方法不灵活,我想找一种方法,可以让子类访问到父类。 我在网上搜索了...

    sevenyxy.zip

    (3)在子类中重写父类的showInfo()方法 (4)声明学生类的对象,调用学生的显示信息的方法。 2、请编码实现动物世界的继承关系: 动物(Animal)具有行为:吃(eat)、睡觉(sleep)、移动(move) 动物包括...

    hibernate annotation帮助文档

    从父类继承的属性 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. ...

    learn[removed]一个简单的示例,了解Javascript及其概念的工作方式

    学习Javascript 一个简单的示例,了解Javascript及其概念的工作方式。ES6类和继承ES6-classes.js 如何定义班级 //CODE GOES HERE}```如何定义构造函数 constructor(){ //INITIAL... 如何从父类继承子类 //CODE GOES HER

    HandwritingCode:手写代码系列,持续收集更新中

    自动生成readme.md文件 npm run create 说明 instanceof 判断左边的原型是否存在于右边的原型链中 ...子类不能继承父类的私有属性 9.数组排序 冒泡排序 选择排序: 遍历自身以后的元素,最小的元素跟自己

    常见的java面试题及解答

    继承允许子类继承父类的方法和属性,同时可以重写父类的方法,从而实现多态。接口则允许不同的类通过实现同一个接口来达到多态的效果。 Java中如何避免空指针异常? 在Java中,可以通过对可能为空的对象进行“非空...

    hibernate annotation 中文文档

    从父类继承的属性 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. 关联...

    Hibernate Annotations 中文文档

    从父类继承的属性 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. ...

    python中,类的继承,实例及结果(必须知道的五点)

    —–子类(衍生类)可以直接继承父类中的所有的属性和方法 1、继承—创建实例 定义了三个类,Animal,Dog,Hashiqi;Hashiqi继承Dog方法,Dog继承Animal中的方法。Hahsiqi不仅可以执行Dog里面的方法,也可以执行Animal...

    PHP实现在对象之外访问其私有属性private及保护属性protected的方法

    本文实例讲述了PHP实现在对象之外访问其私有属性private及保护属性protected的方法。分享给大家供大家参考,具体如下: public 表示全局的访问权限,类内部外部子类都可以访问; private表示私有的访问权限,只有本...

    这样回答继承可能面试官更满意

    继承可以使得子类具有父类的各种方法和属性。以免重复输出很多代码。 二、继承的原理 复制父类的方法和属性来重写子类的原型对象。 三、原型链继承 3.1 实现 function Father() { this.text = '1'; } Father....

    一个由MVC设计模式开发的例子,初学FLEX设计模式很好的资源

    父类是不能够获得子类派生的一些属性的,但是我们可以把event的类型强制转换成我们自定义的类型就可以获得子类中的属性了. 这样我们使用var evt:*事件类型=*事件类型(event);//强制转换事件类型 var caozuo:string=...

    java面试题静态加载顺序构造方法

    Java中的继承与静态static等的执行先后顺序的面试题 java面试题静态加载顺序构造方法 ...2、调用类的构造方法时先调用父类的构造方法,在调用子类的构造方法 3、类初始化时,先初始化类的属性成员,在执行构造方法。

    Python基础类继承重写实现原理解析

    – 子类(衍生类)可以直接继承父类中的所有的属性和方法 注意事项: a.在创建类时,如果省略了父类,则默认父类为object, object是所有类的父类,所有类都继承自object。 b. isinstance()用来检查一个对象是否...

    基于java的企业级应用开发:Spring Jdbc.ppt

    Spring JdbcTemplate的解析 从JdbcTemplate的继承关系图可以看出,JdbcTemplate类的直接父类是JdbcAccessor,该类为子类提供了一些访问数据库时使用的公共属性。 其主要功能是获取数据库连接,还可以引入对数据库...

    python基础-类与对象(2)

    pytyhon基础——类与对象(1) 点击即可访问(在另一篇文章中) 一、对象 二、面向对象(oop) 三、类的详解 ...- 子类(衍生类)可以直接继承父类中的所有的属性和方法 注意事项: a.在创建类时,如果省略了

    Hibernate注释大全收藏

    整个层次结构中的所有父类和子类属性都映射到同一个表中,他们的实例通过一个辨别符列(discriminator)来区分。 Plane 是父类。@DiscriminatorColumn 注解定义了辨别符列。对于继承层次结构中的每个类, @...

Global site tag (gtag.js) - Google Analytics