A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sakuratossi 中级黑马   /  2014-8-30 15:29  /  1014 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

OverLoad重载:同名函数具有不同的参数列表。
两个或以上的方法,方法名相同,但是参数列表(可以是参数数量或类型)不同。

重载方法必须满足下列条件

(1) 方法名必须相同
(2) 方法的参数签名必须相同
(3) 方法的返回类型和方法的修饰符可以不相同
注意点:
1. 不能通过访问权限、返回类型、抛出的异常进行重载;
2. 对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果。

通常会想为什么不能用方法的返回值类型来区分重载方法呢?
比如
1. void method(){}
2. int method(){}
3. int method(int x, show y){}

只要编译器可以根据语境明确判断出语义,比如在int x =method()中,那么的确可以据此区分重载方法。不过,有时你并不关心方法的返回值,你想要的是方法调用的其他效果(这常被称作为“为了副作用而调用”),这时你可能会调用方法而忽略其返回值。所以,如果像下面这样调用方法:
method();
此时Java如何才能判断该调用那一个method()呢?别人该如何理解这中代码呢?
因此 ,根据方法的返回值来区分重载方法是行不通的。

Override重写:也称 覆盖 :在子类中定义某个方法与其父类有相同的名称和参数;子类对象引用或者子类对象的父类引用使用这个方法时,将调用子类中的定义。

(1) 方法名、参数、返回值必须相同 --  三同
(2) 子类方法不能缩小父类方法的访问权限。 -- 一大
(3) 子类方法不能抛出比父类更多的异常(子类可以不抛出异常)。  -- 一小
(4) 被定义为final的方法不能被重写。
(5)        父类是静态,子类也要加静态。
(6) 父类方法用private修饰的话,即使子类里面有一模一样的方法,这不属于重写。

评分

参与人数 1技术分 +1 收起 理由
天黑偷牛 + 1 很给力!

查看全部评分

3 个回复

倒序浏览
重载跟复写,有点迷糊。学习了。
回复 使用道具 举报
很给力啊,学习了
回复 使用道具 举报
学习态度很好啊!加油哦!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马