【发布时间】:2012-03-21 17:14:29
【问题描述】:
假设有以下基类:
package bg.svetlin.ui.controls;
public abstract class Control {
protected int getHeight() {
//..
}
//...
}
另外,在同一个包中,有一个类继承:
package bg.svetlin.ui.controls;
public abstract class LayoutControl extends Control {
public abstract void addControl(Control control);
//...
}
那么,在另一个包中还有第三个类:
package bg.svetlin.ui.controls.screen;
public abstract class Screen extends LayoutControl {
//...
}
最后,还有实现类,同样在不同的包中:
package bg.svetlin.ui.controls.screen.list;
public class List extends Screen {
private final Vector controls = new Vector();
public void addControl(Control control) {
height += control.getHeight();
controls.addElement(control);
}
}
即使List 继承自Control,并且getHeight() 是protected,也会出现以下错误:
getHeight() 在 bg.svetlin.ui.controls.Control 中具有受保护的访问权限
我检查了我的导入是否正确。我正在使用 NetBeans。
知道有什么问题吗?我认为protected 字段和方法对孩子来说是可见的,即使后者在不同的包中。
谢谢!
【问题讨论】:
-
在你的抽象类中方法是
getWidth(),在你使用的子类中getHeight()。这仅仅是因为它是示例代码吗? -
是的。感谢您发现这一点。
标签: java oop inheritance attributes