public class Doubt1{
public static void main(String[] args){
Manager m1 = new Manager(25000);
Manager m2 = new Manager(25000);``
System.out.println(m1.getSalary(250000) + " " + m2.getSalary()); //how is m1.getSalary working when getSalary(int) is protected in Employee class
}
}
class Employee{
protected int salary;
public Employee(int s){
salary = s;
}
protected int getSalary(int s){
return salary + s;
}
}
class Manager extends Employee{
public Manager(int s){
super(s);
}
public int getSalary(){
return salary;
}
}
我在经理类中重载了 Employee 类的 getSalary 方法。 Employee 类的 getSalaray(int) 方法具有 protected 访问权限,因此只能从 Manager 类访问。但是,当我调用 m1.getSalary(25000) 时,为什么编译器不像我将方法声明为私有(private)时那样提示“员工类中的 protected 访问”?或者 protected 访问修饰符是不是我想象的那样?
最佳答案
protected
访问修饰符允许比 private
更多形式的访问。由于该方法位于同一个包或子类中,因此允许访问。
更多信息请点击 http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
关于java - 我如何能够从不继承自该类的类访问 protected 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29706635/