「java获取子类属性」java反射获取子类
本篇文章给大家谈谈java获取子类属性,以及java反射获取子类对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、父类获取子类类型 java
- 2、java怎么获取某个父类(或接口)的所有子类
- 3、java继承中父类可以访问子类哪些属性
- 4、Java 子类继承父类,子类重写父类方法,这种情况下父类可以获取到子类的数据吗?
父类获取子类类型 java
既然是父类,子类当然可以使用父类中的非私有属性了。
Base.property
java怎么获取某个父类(或接口)的所有子类
class parent{
/**
* 获取子类的类名
*/
public String getClassName(){
return this.getClass().getSimpleName();
}
//父类中直接调用
String className = getClassName();
}
限定!)利用它的单调性求最值与利用均值不等式
java继承中父类可以访问子类哪些属性
能的
1、除了JAVA中,子类继承父类的所有方法和属性(构造方法要用关键字super([参数])调用)
另外,当父类的方法或属性被声明为private(私有的)时,子类也是不可以继承的。
2、继承是JAVA中一个重要的特色,便于程序的编写,提高代码的重用性。
Java 子类继承父类,子类重写父类方法,这种情况下父类可以获取到子类的数据吗?
在父类中能获取子类的属性吗?一般情况下是不行的,因为孩子尚未出世哪里来的属性。但有时需要在父类处理该类(包含子类)的所有属性,该怎么做呢,有种方法能解决——在父类中将子类的实例引用进来。假设BaseClass是基类,有个getAll方法用以获取该类的所有属性。SubClass继承子BaseClass,SSClass继承自SubClass,SSClass的实例调用getAll方法时获取SSClass及其父类的所有属性。具体做法如下:
import java.lang.reflect.Field;
public class BaseClass {
private String a;
private int b;
// public BaseClass() {
// bc = setBC();
// }
private final 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
java获取子类属性的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java反射获取子类、java获取子类属性的信息别忘了在本站进行查找喔。