Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型? 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。疑问: 不知大家是怎么理解红色那句话的? 我认为是不能的, 返回类型不一样都不能构成重载了.int (int x){
......
}
void (int x){
......
}
......
}
void (int x){
......
}
......
}
void (int x){
......
}
这样的重载将编译出错而类似
int method(List<Integer> i) {}
String method(List<String> s) {}
这样的被称为泛型重载, List<Integer>和List<String>在运行时的类型都是List, 但这样的重载是可以的...
Overloaded的方法是可以改变返回值的类型。
这句话是正确的,唯一区分方法重载的是方法的参数列表不同,当参数列表不同时就可改变其返回类型
package alltest;
public class OverLoadTest {
public void m1(int x){}
public int m1(int x,int y){return 12;}
// public String m1(int x){return "12";} //error!Duplicate method m1(int)
//in type OverLoadTest
public String m1(int x,int y,int z){return "abc";}
public int m1(String x,int y){return 12;};}当参数列表不同时,能达到区分重载时,就可以改变方法的返回类型
return null;
}
public int Function(String A){
return 0;
}
public void Test(){
// 方法2重载了方法1
Object _Result1 = Function(); // 调用方法1
int _Result2 = Function("1"); // 调用方法2
}
这样是可以的啊, 重载参数列表不同,返回类型也可以不一样。
......
}
void (int x){
......
}
以上代码不是重载,因重载是方法的参数列表必须不相同,参数个数、参数类型、参数顺序,只要满足其一就行,如果改为下确的重载
int (int x){
......
}
void (int x,int y){
......
}
则可以通过编译
public String Student();
public String Student(int i);
public String Student(int i,String j);
public String Student(int i,String S,int k);