CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

多态?(不防看一下,也许你也搞不清楚哦!)

楼主leqixb(清然)2005-04-04 16:43:40 在 Java / J2SE / 基础类 提问

class   Hello{  
          static   void   f1(){  
                f2();            
          }  
          static   void   f2(){  
                System.out.println("Hello.f2()");            
          }  
  }  
  class   Hi   extends   Hello{  
          static   void   f2(){  
                System.out.println("Hi.f2()");            
          }  
  }  
  public   class   H3   extends   Hi{  
          public   static   void   main(String[]   args){  
                  Hello   h   =   new   H3();          
                  h.f1();  
          }  
  }  
  结果:Hello.f2();  
  why? 问题点数:20、回复次数:12Top

1 楼xuliduo(实习牧师)回复于 2005-04-04 16:57:40 得分 1

你调用的是f1()方法啊,继承后还是调用Hello的f2方法嘛~Top

2 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-04 17:06:04 得分 5

static函数不存在override  
   
  哪来多态?Top

3 楼xuguopin(江湖人)回复于 2005-04-04 17:07:27 得分 5

静态方法是根据声明类型激发的,而不是实际类型Top

4 楼yunchenge(云沉阁)回复于 2005-04-04 17:08:54 得分 5

static   方法不是动态绑定的,而是在编译时就绑定了的!Top

5 楼leqixb(清然)回复于 2005-04-04 17:09:34 得分 0

Hi继承了Hello的f1(),怎么调用Hi的f1()?  
  Top

6 楼leqixb(清然)回复于 2005-04-04 17:11:37 得分 0

哇,刚刚才看到1条回复哎,原来跟STATIC有关,又愚蠢了一八,俺试试!谢了!Top

7 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-04 17:12:57 得分 0

static方法是类的,不是某个实例的(因此没有this指针,不可能执行时判断类型),所以编译时就根据声明的类型决定了调用那个方法。Top

8 楼zephyer(zephyr)回复于 2005-04-04 17:14:20 得分 3

一句话:静态方法没有多态。  
  理由:编译器不会为静态方法秘密传递this指针,多态就是根据这个this指针来实现的  
  要理解这些,需要深刻理解多态是如何实现的,以及静态方法  
  学习java就不一定非要追求这些细节了,Thingking   in   java都没有讲述这些细节,知道这个结论就可以了Top

9 楼leqixb(清然)回复于 2005-04-04 17:17:01 得分 0

晕,为什么结不了帖?Top

10 楼chenchen2003(晨辰)回复于 2005-04-04 17:17:30 得分 1

当类Hi在继承类Hello的时候,他覆盖了Hello中的f2方法,所以对于继承Hi类的H3  
  来说,他说看到的函数f2是(如果没覆盖Hello中的方法,那么H3继承的就是Hello中的f2方法)Hi类中的f2函数.  
   
  不知道我说清楚没有。多交流。Top

11 楼leqixb(清然)回复于 2005-04-04 17:26:41 得分 0

终于让我把贴给结了,本来一开始只有三位朋友,没想到才过了几分钟,一下子来了这么多朋友,只好把分匀匀分了,反正大家也不是冲着分来的,是吧,小女子在此谢过各位大虾了,多多帮助!Top

12 楼kingfish(工作很忙,很少来csdn...)回复于 2005-04-04 17:35:26 得分 0

更正一下我上面的一句话:  
  static函数不存在RTTI(存在override)  
  Top

相关问题

  • 不是很清楚 帮忙看一下
  • 还是没弄清楚,请shornmao和各位再看一下
  • 关于二维数组和指针的问题请教(清楚不清楚都进来看一下吧)
  • 请看一下:关于建立动态链表
  • help,关于改变菜单状态的问题,来看一下
  • 帮忙看一下,关于动态加载自定义控件
  • 动态加载ifream问题,请兄弟们帮们看一下。
  • 动态加载ifream问题,请兄弟们帮们看一下。
  • 变态老总,各位兄弟看一下
  • 帮忙看一下,防止上传!谢谢

关键词

  • 函数
  • 指针
  • f2
  • h3
  • 方法
  • 调用
  • 继承
  • 静态
  • 类
  • hello

得分解答快速导航

  • 帖主:leqixb
  • xuliduo
  • kingfish
  • xuguopin
  • yunchenge
  • zephyer
  • chenchen2003

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo