Amo*_*kar 0 java inheritance abstract-class abstract
我喜欢这样的场景
这是抽象类
abstract class A
{
public void add()
{
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
这是扩展到抽象类之上的类
class B extends A
{
@Override
public void add()
{
//do something else
}
}
Run Code Online (Sandbox Code Playgroud)
这是我想要调用add方法的类
class C
{
A a = new B();
// Calls B's add method
a.add();
// Call A's add method ???
}
Run Code Online (Sandbox Code Playgroud)
如何调用A的添加方法???
你不能.这就是多态性和封装的全部要点 - 你已经创建了一个实例B,所以B要决定什么add意思.也许B正试图强制执行一些关于何时可以调用的业务规则add- 如果你可以绕过这些规则并A.add()直接调用一个实例,那将毫无用处B.的实施B.add()可以何时以及是否调用决定super.add(),但代码之外 B没有得到做出决定.
| 归档时间: |
|
| 查看次数: |
3398 次 |
| 最近记录: |