考虑下面的代码片断:为什么受保护的方法不能从子类访问?
package vehicle;
public abstract class AbstractVehicle {
protected int speedFactor() {
return 5;
}
}
package car;
import vehicle.AbstractVehicle;
public class SedanCar extends AbstractVehicle {
public static void main(String[] args) {
SedanCar sedan = new SedanCar();
sedan
.speedFactor();
AbstractVehicle vehicle = new SedanCar();
// vehicle //WON'T compile
// .speedFactor();
}
}
SedanCar
是AbstractVehicle
子类,可以包含一个protected
方法speedFactor
。如果它是由同一个类引用的,我可以调用方法speedFactor
。当超类用于参考时,方法speedFactor
不可访问。
隐藏该方法的原因是什么?
因为'protected'对类本身是可见的(比如'private')及其子类。它是**不公开**。 – EpicPandaForce
受保护的实例方法对类本身以及对子类的_instances_可见,但对子类中的静态方法不可见。 – khelwood
但SedanCar是AbstractVehicle的子类。 – MinusInfinity