答案:不是
解释:
当一个方法从 private 变为 default 访问权限时,并不算作方法的覆写。因为 private 访问权限表示该方法只能在所属的类内部访问,而 default 访问权限表示该方法可以在同一个包内的其他类中被访问。两者的访问范围不同,因此无法实现方法的真正覆写。
要覆写父类方法,子类中的方法必须具有相同的方法签名和更宽松(即更开放)的访问权限。在这种情况下,方法签名指的是方法的名称、参数列表和返回类型。因此,如果你将父类中的 private 方法改为 default 访问权限,它将被视为一个新的方法,而不是对父类方法的覆写。
1.验证(相关代码):
class Person{ //定义一个Person类
private void print() {
System.out.println("父类方法!!!");
}
public void fun() {
this.print(); //调用print()方法
}
}
class Student extends Person{ //定义Person的子类Student
void print() { //default默认类型
System.out.println("子类方法!!!");
}
}
public class Hello{
public static void main(String args[]) {
Student s=new Student(); //实例化对象
s.fun();
}
}
结果(eclipse):
2.分析:
在主函数当中,实例化了一个Student类的对象s,调用fun()方法,然后在fun()方法中调用print()方法,如果print()方法被子类覆写,那么fun()方法调用的应该是子类中的方法(即输出“子类方法!!!”),但结果与之相悖,故不是方法的覆写,调用了父类方法。
3.结论与延伸
方法覆写时从private到default不能算是方法覆写,同理可得,从private到public 也不能算是方法覆写,故当父类方法的访问权限为private时,无法进行这个方法的覆写。