方法覆写时从private到default是方法覆写吗?

答案:不是

解释:

当一个方法从 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时,无法进行这个方法的覆写

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值