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();

09-30 23:25