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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 天下 中级黑马   /  2013-8-28 10:00  /  1366 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 潘才新 于 2013-8-29 01:34 编辑

问题都在代码中。
  1. class Fu{
  2.           public void method1(){
  3.                    System.out.println("Fu1--运行");
  4.             }
  5.           public void method2(){
  6.                     System.out.println("Fu2--运行");
  7.               }
  8. }
  9. class Zi extends Fu{
  10.           public void method1(){
  11.                      System.out.println("zi复写Fu");
  12.            }
  13.             public void method3(){
  14.                       System.out.println("Zi--运行");        
  15.            }
  16. }
  17. class Duotai_3{
  18.         public static void main(String[] args){
  19.                
  20.          Fu f=new Zi();
  21.   //父类引用是调用父类method1呢还是子类的method1方法呢,why?
  22.           f.method1();
  23.                   //父类的引用可以调用子类的method3方法?why?
  24.           f.method3();
  25.                 Zi z=new Zi();
  26.                 //子类是否可以调用父类的method1方法,why?
  27.           z.method1();
  28.                   //子类可以调用子类的方法,这个我明白
  29.            z.method3();
复制代码

评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1 淡定

查看全部评分

4 个回复

正序浏览
多态:父类引用指向子类对象是,除了调用方法是子类的,其他的像成员变量了都是父类的。
要想在子类中调用父类方法的话,一是不要复写要调用的父类那个方法;二,要是有必要复写那个父类的方法的话就创建父类引用指向父类对象,再调用。
回复 使用道具 举报
f.method1();//编译的时候看的父类里有没有这个方法,指针指向的是父类里的method1,但是运行的时候指针就动态绑定到子类的method1方法,看的是子类.
f.method3();//和上面的method1一样在编译时先去看父类,父类里面没有就会出错.
zi.method1();//本来就是子类的引用指向自己的对象,调用的肯定是子类的method1方法,可以通过super.method1()调用父类的方法.

总之:多态中非静态的方法,编译看左边(就是父类里有没有,没有就出错),运行时看右边(就是子类的)
调用的静态的方法都是父类的.

评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1 赞一个!

查看全部评分

回复 使用道具 举报
f.method1();//调用子类的方法,我是把多态看成伪装,左边的伪装成右边的。FU f伪装成ZI,调用的就是ZI类
f.method3();//按我的解释应该是可以调用ZI类的M3方法,实际会在编译报错。这有个前提条件,伪装可以,但你并不是他,你只能伪装你有的方法,没有的不能伪装。
zi类只能调用子类的方法,想调用父类请用super关键字!
提示:伪装只是伪装,假的就是假的不可能是真的!

评分

参与人数 1技术分 +1 收起 理由
潘才新 + 1 多逛论坛。啥都是浮云

查看全部评分

回复 使用道具 举报
第一个方法非静态,父类引用指向子类对象,指针动态绑定至子类方法1,F。M3报错,父类型没有M3,编译不通过,子类可以调用父的M1,SUPER就行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马