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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoxinxin003 中级黑马   /  2015-7-12 17:42  /  472 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态中(父类引用指向子类对象)成员函数(非静态)的特点:
        (如果子类静态覆盖父类静态方法,运行时调用的还是父类中的静态方法)不常见但是要知道(与静态的加载方式有关)。
在编译时,参阅引用型变量所属的类中是否有调用的方法,如果有则编译通过,如果没有则编译失败,如代码中的方式2
因为父类中没有Method3方法,所以编译失败。
在运行时:参阅对象所属的类中是否有调用的方法。
总结:成员函数在多态中调用时,编译时期看左边(即父类(引用)中有没有调用的方法),
        运行看右边(即子类对象中是否有调用的方法)。
多态中成员变量的特点:无论编译还是运行,都是参阅的引用型变量所属的类(左边)。即父类和子类中出现重名变量时,
        在多态的情况下,调用的变量值是父类中的值,

  1. class Fu
  2. {
  3.         public void Method1(){
  4.                 System.out.println("method_1");
  5.         }
  6.         public void Method2(){
  7.                 System.out.println("method_2");
  8.         }
  9. }
  10. class Zi extends Fu
  11. {
  12.         public void Method1(){
  13.                 System.out.println("method_1");
  14.         }
  15.         public void Method3(){
  16.                 System.out.println("method_3");
  17.         }
  18. }
  19. class DuoTaiDemo5
  20. {
  21.         public static void main(String[] args){
  22.                 //方式2 多态
  23.                 Fu f = new Zi();
  24.                 f.Method1();
  25.                 f.Method2();
  26.                 //f.Method3();因为父类中没有这个方法。编译失败
  27.                 //方式1
  28. //                Zi z = new Zi();
  29. //                z.Method1();
  30. //                z.Method2();
  31. //                z.Method3();
  32.         }
  33. }
复制代码




7 个回复

倒序浏览
这个知识点,昨天刚学习过
回复 使用道具 举报
加油   加油
回复 使用道具 举报
复习一遍
回复 使用道具 举报
学习一下
回复 使用道具 举报
也过来复习一下
回复 使用道具 举报
复习一下
回复 使用道具 举报
好多知识点啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马