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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© GeXiaoChao 中级黑马   /  2016-7-11 22:19  /  466 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Override和Overload的区别?Overload是否可以改变返回值类型?

7 个回复

倒序浏览
重载可以改变返回值类型,看定义可知,类名相同,参数列表不同,与返回值类型无关
回复 使用道具 举报
重载 方法名相同 参数列表不同 与返回值类型无关
重写 方法名相同  返回值与子父类必须一模一样
回复 使用道具 举报
overload重载是同名函数,用参数区分,
目的在于同一个功能的方法,可以接收不同类型的参数,如fun(int a) fun(string a)。

override是重写,就是覆盖掉以前的函数,目的是这个函数在子类和父类中功能不一致,但是函数名,参数和返回值相同。
回复 使用道具 举报
重载:两同一不同,同一个类中方法名相同,参数列表不同。至于方法其他的部分与方法重载没有任何关系。
重写:两同两小一大,“两同”即方法名相同,形参列表相同;“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等
回复 使用道具 举报
重载:两同一不同,同一个类中方法名相同,参数列表不同。至于方法其他的部分与方法重载没有任何关系。
重写:两同两小一大,
    “两同”即方法名相同,形参列表相同;
    “两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;
    “一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。
http://bbs.itheima.com/forum.php ... p;extra=#pid2606699
回复 使用道具 举报
这个相信大家都知道,那么不同返回类型或者抛出的异常声明可以重载吗?答案是不可
以,那么为什么不可以呢?
public class Test {
public void fn(String name) {}
public String fn(String name) { //Error
return null;
}
public void fn(String name) throws Exception {} //Error
}
因为返回类型和抛出的异常声明是在执行完该方法(运行时)才知道的,所以fn

("Bruce")调用程序不知道去执行哪一个方法。
回复 使用道具 举报
overload是方法重载,在同一个类中,跟返回值无关,跟参数列表有关
override是方法重写,子类重写父类的方法,方法申明一模一样,返回值可以和子类或父类一致
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马