overload和override的区别
(2007-06-03 17:35:53)
转载
分类: 技术交流 | |
1、Overload没有关系,Override有点关系(范围小的可以被范围大的Override)。
2、Overload返回值类型不同不能作为不同的两个函数,Override应该完全一样的返回类型。
---------------------------------------------------------------
overload:
public a(){}
public a(int a){]
在一个类中有同名的方法,但是方法带有不同的参数
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父类中的一些方法以满足自己的需要。
java重写和重载的区别我好像记得override的方法前的访问控制不能比父类中的方法中的控制权限低,就是说prot
ected的父类方法不能被override成private或default的,你可以去看看书,书上应该有介绍。
---------------------------------------------------------------
>>overload(通常被翻译为过载或重载)
一般语境里overload是对method(方法)而言的,可以指一个类中多个名字相同而参数类型列表不相同的方法,这个名字代表的方法就是被overload了的。编译器会根据参数类型列表的不同来决定调用叫这个名字的很多方法中具体的哪一个。
>>override(通常被翻译为覆盖)
一般语境里,如果说这个method(方法)是被override来的,就是说在定义这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法,在子类中,这个方法被overri
---------------------------------------------------------------
>>overload(通常被翻译为过载或重载)
一般语境里overload是对method(方法)而言的,可以指一个类中多个名字相同而参数类型列表不相同的方法,这个名字代表的方法就是被overload了的。编译器会根据参数类型列表的不同来决定调用叫这个名字的很多方法中具体的哪一个。
>>override(通常被翻译为覆盖)
一般语境里,如果说这个method(方法)是被override来的,就是说在定义这个方法的类的父类中有一个与这个方法同名且参数类型列表相同的方法,在子类中,这个方法被overri
de了。在对这个子类的实例调用该方法时,编译器确切的知道调用的是这个子类的方法。
考虑这样两个类:
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){}
}
考虑这样两个类:
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的方法。
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是指它随时随地都只有一种含义。
Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
java面试题 2008-11-19 19:12:36 阅读37 评论0 字号:大中小 订阅
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
overload一般翻译为重载,表示多个函数共用同一个函数名,为了保证调用这些同名函数时能正确区分究竟应该调用的是其中的哪一个,重载的各个函数的参数表(不考虑形参名)
必须彼此不同,通常简略地说成“不同参数表”。它对返回值的类型没有任何要求,所以你可以随意为每一个重载的函数设置返回类型,相同也行,不同也行。
override一般翻译为覆盖,表示子类对从父类继承来的虚函数重新定义,它要求参数表必须跟父类中被覆盖的那个函数的参数表完全相同,返回值类型原则上也要求相同,但如果返回类型是父类的指针或者父类的引用,覆盖时返回类型允许是子类的指针或者子类的引用。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论