黑马程序员技术交流社区

标题: 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 编辑

覆盖,父类中有,子类中也有
重载,同一个方法名,不同的表现形态(内容)
给个小例子说明情况:
  1. public class Test1 {

  2.         public static void main(String[] args){
  3.                 Animal a = new Cat();//向上转型
  4.                 a.eat();
  5.                 Cat c = (Cat)a;//向下转型
  6. //同一个方法名称,返回数据确不相同,理解吧
  7.                 System.out.println(c.sum(1,1));
  8.                 System.out.println(c.sum(1.0,1.0));
  9.                
  10.         }
  11. }

  12. class Animal{
  13.         public void eat(){
  14.                 System.out.println("Animal eat");
  15.         }
  16. }

  17. class Cat extends Animal{
  18.         public void eat(){
  19.                 System.out.println("Cat eat");
  20.         }
  21.         
  22.         public int sum(int a,int b){
  23.                 return a+b;
  24.         }
  25.         public double sum(double a,double b){
  26.                 return a+b;
  27.         }
  28.         
  29. }
复制代码

作者: 唐进    时间: 2012-10-25 20:35
重载Overload:表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。
覆盖Override:表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给覆盖了,这也是面向对象编程的多态性的一种表现。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2