嗨,我只是想承担以下行为..我已经定义了相同的方法 - 基础中的gg()和具有不同访问权限的派生类
Class Base
{
// some thing
**private** Integer gg(){
//return something
}
}
Class Derived{
// something
**public** Integer gg(){
//return something
}
}
Run Code Online (Sandbox Code Playgroud)
在我初始化变量的主要方法中
Base d = new Derived()
Run Code Online (Sandbox Code Playgroud)
并试图调用d.gg()它说Base.gg()是私有的.修改访问说明符是否使方法调用恢复为Base类方法?当我将基类中的gg()的访问指定符更改为public时,它就像多态一样调用Derived类中的方法.
从我读到的有关多态性的内容来看,可以使派生说明符在派生类中的限制性更低,这就是这里的情况.
通过引用到基类访问对象意味着您打算通过基类指定的接口访问它.如果你private在基类中声明了一个方法,那么你就无法通过引用来访问它!
如果情况并非如此,请考虑随之而来的荒谬:
Base b;
if (some condition) {
b = new Base();
}
else {
b = new Derived();
}
b.ggg(); // Ok, or not?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |