哈工大软件构造复习4

为什么要有override这个方法?


对于已经投入使用的类,尽量不要进行修改,推荐定义一个新的类,来重复利用其中共性内容,并且添加改动新功能。

方法覆盖重写的注意事项:


必须保证父子类之间方法的名称相同,参数列表也相同。


@Override:写在方法前面,用来检测是不是有效的正确覆盖重写。
这个注解就算不写,只要满足要求,也是正确的方法覆盖重写。

子类方法的返回值必须【小于等于】父类方法的返回值范围。


小扩展提示:java.lang.Object类是所有类的公共最高父类(祖宗类),java.lang.String就是Object的子类。

子类方法的权限必须【大于等于】父类方法的权限修饰符。


小扩展提示:public > protected > (default) > private
备注:(default)不是关键字default,而是什么都不写,留空。

Java中存在两种多态:重载(Overload)和重写(Override)。其中,重写是与继承有关的多态。方法重载是两种多态的一种,例如,你让一个人执行“求面积”操作时,他可能会问题你求什么面积。所谓多态性,是指可以向功能传递不同的消息,一边让对象根据相应的消息来产生相应的行为。对象的行为通过类中的方法来实现,那么行为的多态性就是方法的重载。

方法重载的语法规则

方法重载的意思是:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同。两个方法的参数不同是指满足下列之一:

  • 参数个数不同
  • 参数个数相同,但参数列表中的某个参数的类型不同。

避免重载出现歧义

重载方法之间必须保证相互的参数不同,但需要小心的是,重载方法在被调用时可能出现歧义调用。例如,下面的Dog类中的cry方法就是容易引发歧义的重载方法(Dog类没有语法错误):

情况1】对于上述Dog类,若调用Dog.cry(10.0, 10); 则输出的信息是“小狗”。
情况2】若调用Dog.cry(10, 10.0); 则输出的i信息是“small dog”。
情况3】若调用Dog.cry(10, 10); 则无法通过编译(提示信息:对cry的引用不正确),因为Dog.cry(10, 10); 不清楚应当执行重载方法中的哪一个(出现歧义调用)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值