方法重写和方法重载的区别?方法重载能改变返回值类型吗?
2016-02-17 08:34
288 查看
方法重写和方法重载的区别?方法重载能改变返回值类型吗?
首先要考虑清楚的是两个概念与什么有关:
重写:@Override:源自于继承,父类的方法不能满足子类的需要就可以重写父类的方法,这也说明父类和子类有相同的行为,才有必要进行方法的重写,如果父类都没有这些方法,就直接咋熬一个自己的方法就行了。
方法重载:源自于同一个方法名,却有不同的返回值,但是这样有必要吗,确实有,这样是为了提高通用性,只提供一个方法,只是参数类型或者个数[u]不同,而且可以范湖不同的类型。[/u]
示例如下:
public class OverrideAndReload {
public
static void main(String[]
args) {
A a =
new A();
a.riding();
a.loading(2);
a.loading(2, 3);
}
}
class A extends B {
// 下面的是方法的覆盖(overRiding)
public
void riding() {
System.out.println("this is overRiding ");
}
// 下面的函数是方法的重载(overLoading),但是返回值类型不同,可以运行
public String loading(int
x) {
System.out.println("this is overLoading return String");
return "loading";
}
public String loading(float
x) { // 这说明参数类型不同就能实现方法重载
System.out.println("this is overLoading return String");
return
"loading";
}
public
int loading(int
x, int y) { // 这说明参数返回值的类型不同就能实现方法的重载
System.out.println("this is overLoading return int");
return 0;
}
public
String loading(int
x, int
y ,int z) {// 这说明参数个数不同就能实现方法的重载
System.out.println("this is overLoading return
String");
return "loading";
}
}
class B {
public
void riding() {
System.out.println("this is B");
}
}
首先要考虑清楚的是两个概念与什么有关:
重写:@Override:源自于继承,父类的方法不能满足子类的需要就可以重写父类的方法,这也说明父类和子类有相同的行为,才有必要进行方法的重写,如果父类都没有这些方法,就直接咋熬一个自己的方法就行了。
方法重载:源自于同一个方法名,却有不同的返回值,但是这样有必要吗,确实有,这样是为了提高通用性,只提供一个方法,只是参数类型或者个数[u]不同,而且可以范湖不同的类型。[/u]
示例如下:
public class OverrideAndReload {
public
static void main(String[]
args) {
A a =
new A();
a.riding();
a.loading(2);
a.loading(2, 3);
}
}
class A extends B {
// 下面的是方法的覆盖(overRiding)
public
void riding() {
System.out.println("this is overRiding ");
}
// 下面的函数是方法的重载(overLoading),但是返回值类型不同,可以运行
public String loading(int
x) {
System.out.println("this is overLoading return String");
return "loading";
}
public String loading(float
x) { // 这说明参数类型不同就能实现方法重载
System.out.println("this is overLoading return String");
return
"loading";
}
public
int loading(int
x, int y) { // 这说明参数返回值的类型不同就能实现方法的重载
System.out.println("this is overLoading return int");
return 0;
}
public
String loading(int
x, int
y ,int z) {// 这说明参数个数不同就能实现方法的重载
System.out.println("this is overLoading return
String");
return "loading";
}
}
class B {
public
void riding() {
System.out.println("this is B");
}
}
相关文章推荐
- Android 蓝牙4.0开发
- 关于宗海图WGS84转CGCS2000的问题
- nmake不是内部或外部命令
- 20160217002 微信公众平台开发接入指南
- Android 颜色Color
- 【管理心得之五十九】浅谈“企业培训”
- SDWebImage的内部实现原理
- Android Studio 导入 Eclipse 的代码后,代码中的注释显示乱码问题
- 更改windows系统语言,改为英文
- 嵌入式系统Linux内核开发工程师必须掌握的三十道题
- 更改windows系统语言,改为英文
- Android 实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音
- 开发基于大数据平台的搜索引擎
- 入职
- 自动标注软件:
- 在 Android 和 iOS 手机上模拟触屏点击的区别
- Android 第三方 Jar 的 Link 与问题:Unable to execute dex: Java heap space的解决方法
- Android ListView分类/分组效果 - 第二种实现方式
- WinCE 手机互联
- iOS-NSOperation 的使用(总结)