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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 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)

结果

结果

3 个回复

倒序浏览
覆盖也叫重写,是多态的前提,意思是子类也可以将父类的方法重新定义(当然方法名,函数名,参数列表要一样才是覆盖),此时子类就有新的定义;
回复 使用道具 举报
覆盖也叫重写,是多态的前提,意思是子类也可以将父类的方法重新定义(当然方法名,函数名,参数列表要一样才是覆盖),此时子类的方法就有新的定义;一般用法是子类中有自己新的的功能,还保留父类原有的功能,(super.方法名())
回复 使用道具 举报
覆盖后不是父类的方法没有了,它还存在着,只是说通过子类对象调用时会调用子类重写的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马