关于子类重写父类中方法后,该方法的①权限修饰符、②返回值类型、③抛出异常,这3个方面的设定要求。

1.权限修饰符。
例如:父类:public class Animal{
public void eat(){
System.out.print(“动物的吃”);
}
}
子类
public class Person extends Animal{
private void eat(){
System.out.print(“人类的吃”);
}
}
在使用多态时:
Animal a = new Person();a.eat是无法调用到子类的eat方法的。因为子类的eat()是私有的只能在本类使用,所以违背了多态的思想。反过来思考,为了让父类引用能正常调用子类的重写后的方法,那么这个方法子类的权限修饰符不能比父类小,否则影响父类的调用。
2.返回值类型的限制条件。
例如:父类:public class Animal{
public Animal eat(){
System.out.print(“动物返回Animal”);
}
}
子类
public class Person extends Animal{
public Person eat(){
System.out.print(“人类返回Person”);
}
}
在使用多态时:
Animal a = new Person();
编译a.eat()的返回结果数据类型默认为Animal,但实际上调用是子类的方法(返回值自然是Person类型),所以编译器会将子类的Person类型强行转型为Animal类型(向上转)。所以这里就要求子类重写的方法的返回值类型要小于父类中的方法,否则强转不了。
3.抛出异常的限制条件。
和上述2返回值类型相似,在运用到多态时,编译器会将子类的异常强行转为父类的异常数据类型,所以要求子类的异常数据类型也要小于父类抛出的异常的数据类型,否则强转失败。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值