【发布时间】:2018-11-03 12:44:22
【问题描述】:
我有一个带有公共方法的基类。
`public class ClassA {
private int a;
public void setA() {
a = 15;
System.out.println(a);
}
}`
然后,有一个 ClassB 扩展了 ClassA,
`public class ClassB extends ClassA {
public void test() {
setA();
}
}`
现在,在main() 中,我创建了一个 ClassB 的实例。实例无法访问方法setA() 和test()。
`public static void main( String[] args ) throws IllegalAccessException, InstantiationException {
Class<?> cls = ClassB.class;
Object obj = cls.newInstance();
obj.setA(); //Not Accessible
obj.test(); //Not Accessible
}`
谁能告诉我哪里出错了?
【问题讨论】:
-
Object没有方法test或setA。您需要将您的对象转换为ClassB。 -
另外,请问您为什么在这里使用反射而不是常规实例化?
-
您是否有任何具体原因使用 .newInstance() 创建实例而不是简单的
ClassB b = new ClassB()? -
您在哪个类中创建 main() 方法。
标签: java inheritance