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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 吴扬 于 2012-6-19 23:56 编辑

最近复习视频,个人对java中方法重载和覆盖的一些小结,欢迎大家补充。
方法重载:类中完成同一种功能的方法有多种不同的表现形式,而这些方法的名称相同,但是调用哪一个方法,取决于方法给定的形式参数。
方法重载的规则:
1.方法名称一定要相同。不一样,就是两个不同的方法,不能称之为重载。
2.传入的参数类型一定要不同。包括参数的类型或者参数的个数,至少有一项不同。
3.方法重载和方法的返回值类型和方法的修饰符没关系。

方法覆盖:对于子父类而言的,子类中的某一个方法的名称,返回值类型,形式参数的类型和个数刚好和其父类的某个方法相同,就称之为方法覆盖。
方法覆盖的规则:
1.方法名称一定要相同。不一样,就是两个不同的方法,不能称之为覆盖。
2.返回值类型一定要相同。不一样就是重载而不是覆盖。
3.方法的形式参数要一样。包括参数的个数和每个参数的类型。
4.修饰符的使用权限只能越来越开放,不能越来越封闭。
以上是个人对方法重载和覆盖的理解,可能还会有一些地方没有总结完全,希望大家补充,一起提高!

评分

参与人数 1黑马币 +20 收起 理由
黄奕豪 + 20 赞一个!

查看全部评分

1 个回复

倒序浏览
   
   在使用重载要注意以下的几点:
1、在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
2、不能通过访问权限、返回类型、抛出的异常进行重载;
3、方法的异常类型和数目不会对重载造成影响;
4、对于继承来说,如果某一方法在父类中是访问权限是priavte,那么就不能在子类对其进行重载,如果定义的话,也只是定义了一个新方法,而不会达到重载的效果

class A {
protected int method1(int a, int b) { return 0; }
}
public class B extends A{
public int method1(int a, int b) { return 0; } //正确,重写父类方法,可以扩大访问权限
//private int method1(int a, int b) { return 0; } //错误,重写父类方法,不能降低了访问权限
//private long method1(int a, int b) { return 0; } //错误,重写父类方法,不能改变返回值类型
public short method1(int a, long b) { return 0; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型
private int method1(int a, long b) { return 0; }//正确,重载自身的方法,可以有不同的访问权限和返回值类型
}

评分

参与人数 1黑马币 +20 收起 理由
黄奕豪 + 20 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马