好的,所以我学习了java所有学期,并认为我对继承和超级/子类有一个清晰的认识.今天我们被赋予了作为一个叫做敌人的超类的任务,包括不同类型的敌人的子类.我做的一切都很好,我的所有子类都正常工作,但当我回去阅读我们必须遵循的指南时,我发现了这句话:
"超类的所有成员变量必须是私有的.对变量的任何访问都必须通过子类中的受保护方法来完成."
据我所知,这对我来说毫无意义.如果变量在超类中是私有的,那么即使从子类中也不允许访问?讨论子类中受保护方法的最后一部分对我来说也没有任何意义.这对超类有什么帮助和/或允许任何访问?
从我对继承的了解,以下是我的想法:
Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N
private Y N N N
Run Code Online (Sandbox Code Playgroud)
如果我在这里理解错误,请解释一下!如果我不正确地理解它,我不想让教练面对给我们错误的指示!
Cyr*_* Ka 17
那个部分
Any access to an a variable must be done through protected methods in the sub classes.
Run Code Online (Sandbox Code Playgroud)
...只是意味着子类必须调用超类中定义的受保护方法.由于这些方法受到保护,因此子类可以访问它们.
首先,您将定义一个这样的基类:
public class Base {
private int x; // field is private
protected int getX() { // define getter
return x;
}
protected void setX(int x) { // define setter
this.x = x;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你会在你的子类中使用它,如下所示:
class Child extends Base{
void foo() {
int x = getX(); // we can access the method since it is protected.
setX(42); // this works too.
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51845 次 |
| 最近记录: |