黑马程序员技术交流社区

标题: 方法 [打印本页]

作者: 张邦庆    时间: 2011-10-26 10:07
标题: 方法
方法的覆盖,重写,重载时子类与父类之间的关系是什么?
作者: 姚志华    时间: 2011-10-26 10:30
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型
子类与父类之间的关系?这个你问的有水平,你都知道是子类与父类,当然得知道是继承呀.呵呵,而且你说的覆盖就是重写哦
作者: 黄健    时间: 2011-10-26 10:42
在重写时,会牵扯到子类父类之间的关系,因为子类重写了父类的某些方法,在调用时自然是执行自己的方法,而不去找父类的方法;
重载是对于类自己,与子类父类没关系,是有多个同名但不同参数的方法称为重载。
自己的理解,呵呵。
作者: 张邦庆    时间: 2011-10-26 10:44
哈哈,谢谢

作者: 陆华山    时间: 2011-10-26 10:47
范围不同:重载只在一个类之间发生,覆盖牵涉到父类子类。。方法重写的特性
  关于方法重写的一些特性:   1.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致(子类重写父类的方法)   2.子类抛出的异常不能超过父类相应方法抛出的异常(子类异常不能大于父类异常)   3.子类方法的访问级别不能低于父类相应方法的访问级别(子类访问级别不能低于父类访问级别)      .....................方法重载具体规范
  一.方法名一定要相同。   二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。   1.如果参数个数不同,就不管它的参数类型了!   2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同。   三.方法的返回类型、修饰符可以相同,也可不同。
作者: 张邦庆    时间: 2011-10-26 10:47
当子类执行重写的方法时,是直接执行子类,还是先在父类中找到其方法,而后在执行子类

作者: 黄健    时间: 2011-10-26 10:56
执行方法时是从下往上找,先找子类,没有再找父类,还没有找爷类。。。一但找到立马执行,不继续往上找了
已经重写父类方法后,就直接执行子类的这个方法,不再调用父类的方法
作者: 张邦庆    时间: 2011-10-26 11:00
那类加载器的子类与父类的执行关系又怎样啊
作者: 黄健    时间: 2011-10-26 11:07
你学的快啊,还没看到呢,呵呵




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