A类是抽象类,B类是A类的扩展
现在,类A的引用可以容纳类B的对象,即
A aObj = new B();
并假设B类有一些额外的方法...
喜欢
class A
{
public show();
}
class B extends A
{
public show(){}
public method1(){}
private method2(){}
}
现在告诉我变量aObj可以从B类访问什么
它可以访问所有内容吗?
最佳答案
因为编译器认为aObj是A类型,所以aObj只能使用show(),而A的唯一已知方法是show()。
如果您知道实际上有一个B,则可以将该对象转换为B:
if (aObj instanceof B.class) {
B bObj = (B) aObj;
bObj.method1(); //OK
} else {
log.debug("This is an A, but not a B");
}
aObj.show();