黑马程序员技术交流社区

标题: 名称屏蔽 [打印本页]

作者: 刘小峰    时间: 2011-12-27 14:33
标题: 名称屏蔽
本帖最后由 流氓l老醯 于 2011-12-27 16:44 编辑

如果一个java基类拥有某个已被多次重载的方法名称,那么在导出类中重新定义该方法名称,是否会屏蔽其基类中的某个版本;重载机制还能不能正常工作{:soso_e132:}
作者: 刘基军    时间: 2011-12-27 14:45
导出类--是子类的意思吧?!
  1. class Person
  2. {
  3.         void print(int i)
  4.         {
  5.                 System.out.println(i);
  6.         }       
  7.         void print(int i,int j)
  8.         {
  9.                 System.out.println(i+j);
  10.         }       
  11. }

  12. class Student extends Person
  13. {
  14.         public void print(int i,int j)
  15.         {
  16.                 System.out.println(i-j);
  17.         }       
  18. }
  19. class Test
  20. {
  21.         public static void main(String [] args) throws Exception
  22.         {
  23.                 Student s = new Student();
  24.                 s.print(8,5);//输出:3
  25.                 s.print(0);//输出:0
  26.   }
  27. }
复制代码

作者: 刘建宇    时间: 2011-12-27 15:20
重载机制是能正常工作的,如果子类覆盖了父类中的这个方法,用子类对象的引用调用该方法,会执行子类的这个方法,用父类对象的引用调用该方法会执行父类的方法,或者是父类的引用指向子类的对象,这是就多态了,编译要看左边,运行就要看右边了,意思就是如果父类中有该方法,编译通过,运行时却走的是子类的方法代码
作者: 王昌盛    时间: 2011-12-27 15:28
什么是导出类
同楼上,如果是子类的意思的话
看子类中方法与父类中方法的参数列表(参数的个数,类型)是否相同,若相同就是方法的覆写,也就是屏蔽掉了原来的方法,若方法的参数列表不同,构成方法的重载,重载机制正常工作




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