Say there's the following base class:
package bg.svetlin.ui.controls; public abstract class Control { protected int getHeight() { //.. } //... } Also, in the same package, there's a class that inherits:
package bg.svetlin.ui.controls; public abstract class LayoutControl extends Control { public abstract void addControl(Control control); //... } Then, there's a third class in another package:
package bg.svetlin.ui.controls.screen; public abstract class Screen extends LayoutControl { //... } And, finally, there's the implementation class, again in a different package:
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); } } Even though List inherits from Control, and the getHeight() is protected, there's the following error:
getHeight() has protected access in bg.svetlin.ui.controls.Control
I've checked that my imports are right. I'm using NetBeans.
Any idea what's wrong? I thought protected fields and methods are visible to the children even if the latter are in a different package.
Thanks!
getWidth(), in the subclass you're usinggetHeight(). Is this just because it's example code?