黑马程序员技术交流社区

标题: 关于子父类中函数覆盖的问题 [打印本页]

作者: zq19910303    时间: 2015-6-23 16:15
标题: 关于子父类中函数覆盖的问题
本帖最后由 zq19910303 于 2015-6-24 12:03 编辑

当子父类中出现同名函数时,子类函数就会将父类函数覆盖掉,也就是说原来的父类上的函数没有了,现在只有子类上的函数的意思吗?当为什么在子类中还是可以用super调用到父类的同名函数?     从打印结果看父类的函数没从内存上消失,那子类何谈将父类地函数覆盖了呢?
  1. class A
  2. {
  3.         void show()
  4.         {
  5.                 System.out.println("---------------a");
  6.         }
  7.         
  8. }
  9. class B extends A
  10. {
  11.         void show()
  12.         {
  13.                 System.out.println("--------------b");
  14.                 super.show();
  15.         }
  16. }


  17. class Demo
  18. {
  19.           public static void main(String[] args)
  20.           {
  21.                    B b=new B();
  22.                                    b.show();
  23.           }
  24. }
复制代码

捕获.PNG (876 Bytes, 下载次数: 20)

结果

结果

作者: 天若有晴    时间: 2015-6-23 17:03
覆盖也叫重写,是多态的前提,意思是子类也可以将父类的方法重新定义(当然方法名,函数名,参数列表要一样才是覆盖),此时子类就有新的定义;
作者: 天若有晴    时间: 2015-6-23 17:05
覆盖也叫重写,是多态的前提,意思是子类也可以将父类的方法重新定义(当然方法名,函数名,参数列表要一样才是覆盖),此时子类的方法就有新的定义;一般用法是子类中有自己新的的功能,还保留父类原有的功能,(super.方法名())
作者: wenxueaaa555    时间: 2015-6-23 22:36
覆盖后不是父类的方法没有了,它还存在着,只是说通过子类对象调用时会调用子类重写的方法




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