1,2,3重载,4不能2出现在同一个类中。作者: 李猛 时间: 2014-3-22 12:47
重载就是函数名相同返回值相同,只是参数不同(参数个数不同,参数类型不同)
复写就是子类继承父类,子类重写父类的方法(前提是该父类的方法可以继承),重写要求函数名与返回值必须相同(其实就是把父类的方法说明部分抄下来,主题部分可以按照你的要求改动)作者: 牛头人图腾 时间: 2014-3-22 13:07
一、首先明确这两个概念:
函数重载,在一个类定义中,可以编写几个同名的方法,但是只要它们的签名参数列表不同,Java就会将它们看做唯一的方法。简单的说,一个类中的方法与另一个方法同名,但是参数表不同,这种方法称之为重载方法。
函数覆盖,当子类声明了与基类相同名字的方法,而且使用了相同的签名时,就称子类的成员函数覆盖基类的成员函数。也就是说子类的函数声明和父类一样,函数体不一样视之为覆盖。
二、例子
class DemoA{
public void method(int a){}//暂时称为方法1
public void method(int b,int c){}//方法2
}
class DemoB extends DemoA(){
public void method(int a){System.out.println(a);}//方法3
}
对照概念:1、方法1和方法2在同一类中,方法名相同但是参数列表不同,所以重载。
2、方法1和方法3分别在父类和子类中,同时方法3和方法1的声明完全相同,方法3又建立自己的函数体。所以方法3和方法1视为覆盖。
无论重载和覆盖它都不是表示某一具体的事物,它表达的是事物之间的关系,即函数之间的关系。作者: 郭黎明 时间: 2014-3-22 13:31 本帖最后由 郭黎明 于 2014-3-22 13:32 编辑
重载:在一个类中,允许存在一个以上的同名函数,只要它们的参数个数或者参数类型不同即可。
特点:与返回值类型无关,只看参数列表。
重写:子类继承了父类,子类有了父类的方法,但子类虽具备该功能,但是功能的内容和父类不一致, 这时覆盖父类的功能,在子类执行中会实现子类特有的内容。
特点:子父类方法名要一模一样。
静态只能覆盖静态。
子类覆盖父类,子权限必须大于等于父类权限,否则编译失败。
public void a(){}// a
public void a(int a, int b){}//b
public void a(long a, long b){} //c
public int a(int a,int b){}//d
a与bcd构成重载 b与ac构成重载 b与d参数类型与个数相同不构成重载属同一函数
c与abd构成重载 d与ac构成重载
public void a(){
}
public void a(int a, int b){
}
public void a(long a, long b){
}
public int a(int a,int b){
}
不算重写作者: H-Deka 时间: 2014-3-23 16:56
重载是说方法名相同,但方法的参数个数、参数顺序、参数类型等等不同。根据不同的参数会调用相应的方法
重写是子类方法覆盖父类的方法叫重写作者: 歌癫 时间: 2014-3-23 21:02 本帖最后由 歌癫 于 2014-3-23 21:10 编辑
【重载】——就是函数名相同,但参数列表中的参数个数不同或参数的类型不同,则视为函数的重载。
public void a(int a, int b){
}
public int a(int a,int b){
}
在一个类中,不能出现这样的两个函数,你一编译运行,java虚拟机就懵了