overload和override的区别

顶一个
原文地址:overload和override的区别 作者:尘封
  1、Overload没有关系,Override有点关系(范围小的可以被范围大的Override)。  
2、Overload返回值类型 不同不能作为不同的两个函数,Override应该 完全一样的返回类型。  
---------------------------------------------------------------  
 
overload:  
public   a(){}  
public   a(int   a){]  
在一个类中有同名的方法,但是方法带有不同的参数  
 
Override:  
public   class   a{  
    public   aaa(){]  
}  
public   class   b   extends   a   {  
    public   aaa(){}  
}  
方法aaa Override  
---------------------------------------------------------------  
 
还有,overload一般发生在 同一个类中的有着不同的参数名和(或)不同数量的参数的 同名方法之间,但同名方法的返回值可以一样  
override比较常见的是子类继承父类后,override父类中的一些方法以满足自己的需要。  
我好像记得override的方法前的访问控制不能比父类中的方法中的控制权限低,就是说protected的父类方法不能被override成private或default的,你可以去看看书,书上应该有介绍。  
 
---------------------------------------------------------------  
 
>>overload(通常被翻译为过载或重载)  
 
一般语境里overload是对method(方法)而言的,可以指一个类中多个名字相同而参数类型列表不相同的方法,这个名字代表的方法就是被overload了的。编译器会根据参数类型列表的不同来决定调用叫这个名字的很多方法中具体的哪一个。  
 
>>override(通常被翻译为覆盖)  
 
一般语境里,如果说这个method(方法)是被override来的,就是说在定义这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法,在子类中,这个方法被override了。在对这个子类的实例调用该方法时,编译器确切的知道调用的是这个子类的方法。  
 
考虑这样两个类:  
 
class   Father   {  
        public   void   doSomething(){}  
        public   void   doSomething(int   a){}  
        public   void   doSomething(String   s,   int   a){}  
}  
 
class   Son   extends   Father   {  
        public   void   doSomething(String   s,   int   a)   {}  
        public   void   doSomething(int   a,   String   s){}  
}  
 
Father类中有3个doSomething方法,唯一的区别是参数类型列表,它们是overload了的方法。再看子类,第一个方法也叫doSomething,且父类中有一个doSomething方法和这个方法的参数类型列表相同,所以这是override;而第二个方法虽然名字也叫doSomething,但它的参数类型列表跟父类中和子类中其他的doSomething方法的参数类型列表不一致,所以编译器默认这是一个overload的方法。那实际上我们有多少种方式来调用Son的实例呢?如下:  
 
new   Son().dosomething();  
new   Son().dosomething(3);  
new   Son().dosomething("Hi",   5);  
new   Son().dosomething(7,   "Hello");  
 
其中前三个是从父类继承的,且第三个是调用的子类的那个public   void   doSomething(String   s,   int   a){}方法,最后一个是在子类中新定义的一个overload的方法。  
 
注意:overload是指同样的东西在不同的地方具有多种含义,而override是指它随时随地都只有一种含义。   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值