你好,游客 登录 注册 搜索
背景:
阅读新闻

Java 方法的重写与重载

[日期:2013-07-28] 来源:Linux社区  作者:champagne [字体: ]

Java 中方法的重载与重写

重载:

1.方法名不相同,参数不同(同名不同参)

(1).注意:这里的不同参包括(参数类型不同、参数个数不同、参数顺序不同)

(2).返回值类型没有要求(可以是void、int、String等)

(3).修饰符没有要求(可以是public、private等)

2.发生在同一个类中

可以参照下面一段代码进行理解

public class ReLoadAdd {
public void add(long a,int b){//add()方法
int c = (int)a+b;
System.out.println(c);
}
//重载add()方法,与add()参数类型不同
private void add(int a,int b){
int  c = a+b;
System.out.println(c);
}
//重载add()方法,与add()参数个数不同这里有三个参数
protected void add(long a,int b,int c){
int d = (int)a+b+c;
System.out.println(c);
}
//重载add()方法,与add()参数顺序不同,修饰符为默认
void add(int b,long a){
int c = (int)a+b;
}
}

重写

1.发生在父子类中,子类对父类的方法进行重写

2.同名并且同参,返回值类型也应相同

3.子类方法的修饰符不能比父类方法的修饰符更封闭(要不和父类修饰符相同,要么比父类修饰符更宽泛)

4.子类抛出的异常类型不能比父类抛出的异常更宽泛

下面写一个ReLoadAdd的子类叫ReWriteAdd,完成对父类add()方法的重写 

public class ReWriteAdd extends ReLoadAdd{
//  对父类第一个方法add()的重写,修饰符只能为public如果该没其他的报错,是第三条的印证
public void add(long a,int b){
int c = (int)a+b;
System.out.println(c);
}
//  对父类ReLoadAdd第二个add()方法的重写,父类修饰符为protected,所以子类可以为(protected、public)这里为protected
public void add(long a,long b){
long c = a+b;
System.out.println(c);
}
//  对父类ReLoadAdd第三个add()方法的重写,父类修饰符为protected,所以子类可以为(protected、public)这里为protected
protected void add(long a,int b,int c){
int d = (int)a+b+c;
System.out.println(d);
}
}

推荐阅读:

Java中数组的比较的真相 http://www.linuxidc.com/Linux/2013-07/86970.htm

Java向前引用容易出错的地方 http://www.linuxidc.com/Linux/2013-06/86626.htm

Java中数组的clone http://www.linuxidc.com/Linux/2013-06/86606.htm

Java中的native关键字 http://www.linuxidc.com/Linux/2013-06/85573.htm

linux
相关资讯       Java方法重载  Java重载与重写 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款