黑马程序员技术交流社区
标题:
Overload和Override是多态性的表现?
[打印本页]
作者:
赵红萍
时间:
2012-10-25 19:49
标题:
Overload和Override是多态性的表现?
Overload和Override是多态性的表现?这怎么理解....
作者:
给生活加点料
时间:
2012-10-25 20:04
Override 子类的方法覆盖饿了父类的方法,当调用子类时,执行的是子类中重写后的方法。
Overload 多种实现,根据参数列表的不同。传参不同,调到不用的方法。
作者:
鲁中需
时间:
2012-10-25 20:06
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现。
1、重写(Overriding)是父类与子类之间多态性的一种表现,而重载(Overloading)是一个类中多态性的一种表现。
2、如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding) 。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。
这也是面向对象编程的多态性的一种表现。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。不能通过访问权限、返回类型、抛出的异常进行重载。
其实现的机制:
overload是重载,重载是一种参数多态机制,即代码通过参数的类型或个数不同而实现的多态机制。是一种静态的绑定机制。(在编译时已经知道具体执行的是那个代码段)
override是覆盖。覆盖是一种动态绑定的多态机制。即在父类和子类中同名元素(
如成员函数)有不同的是想代码。执行的是哪个代码是根据运行是的实际情况而定的。
作者:
新立
时间:
2012-10-25 20:21
本帖最后由 新立 于 2012-10-25 20:23 编辑
覆盖,父类中有,子类中也有
重载,同一个方法名,不同的表现形态(内容)
给个小例子说明情况:
public class Test1 {
public static void main(String[] args){
Animal a = new Cat();//向上转型
a.eat();
Cat c = (Cat)a;//向下转型
//同一个方法名称,返回数据确不相同,理解吧
System.out.println(c.sum(1,1));
System.out.println(c.sum(1.0,1.0));
}
}
class Animal{
public void eat(){
System.out.println("Animal eat");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("Cat eat");
}
public int sum(int a,int b){
return a+b;
}
public double sum(double a,double b){
return a+b;
}
}
复制代码
作者:
唐进
时间:
2012-10-25 20:35
重载Overload:表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
覆盖Override:表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2