A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马老兵 中级黑马   /  2012-3-26 12:14  /  1630 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

方法重载的作用只是为了增加程序的可读性么?还有 pubilic static int A()跟pubilic static double A()是重载除了返回值有区别之外还有那些地方有区别呢?最好在详细说下程序中使用方法重载的目的。~~~~~~~~~~~高手在那里?~~~~~~~~~~··。。。。

3 个回复

倒序浏览
呵呵, pubilic static int A()跟pubilic static double A()不是重载,他们只是返回值不同,重载是两个方法可以同名,但是参数类型不能相同,你可能会问为什么返回值不同不是重载呢?你想想看我们在调用方法时是怎么调用的,是对象名.方法名(参数),这是JAVA使用方法的模式,JAVA 在这里是不判断返回值类型的。假如俩个方法同名,只是返回值不同,那你让JAVA在调用方法时怎么分辨是哪个方法呢?
回复 使用道具 举报
本帖最后由 朱俊 于 2012-5-16 15:04 编辑
  1. ~~~~~~~~~~~~~~~~~~
复制代码
回复 使用道具 举报
1. 重载方法必须满足以下条件: i. 方法名相同。ii. 方法的参数类型、个数、顺序至少有一项不同。iii. 方法的返回类型可以不相同。iv. 方法的修饰符可以不相同。2. 覆盖方法必须满足以下条件: i. 子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回类型一致。ii. 子类方法不能缩小父类方法的访问权限。iii. 子类方法不能抛出比父类方法更多的异常。iv. 方法覆盖只存在于子类和父类(包括直接父类和间接父类)之间。在同一个类中方法只能被重载,不能被覆盖。v. 父类的静态方法不能被子类覆盖为非静态的方法。vi. 子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。vii. 父类的非静态方法不能被子类覆盖为静态方法。viii. 父类的私有方法不能被子类覆盖。ix. 父类的抽象方法可以被子类通过两种途径覆盖:一是子类实现父类的抽象方法;二是子类重新声明父类的抽象方法。x. 父类的非抽象方法可以被覆盖为抽象方法。方法重载和方法覆盖具有以下相同点: 1)都要求方法名相同。 2)都可以用于抽象方法和非抽象方法之间。方法重载和方法覆盖具有以下不同点: 1)方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致。 2)方法覆盖要求返回类型必须一致,而方法重载对此不做限制。 3)方法覆盖只能用于子类覆盖父类的方法,而方法重载用于同一类的所有方法 4)方法的覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。 5)父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马