CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

一个函数 重载 和 函数 覆盖 的问题(请教)。

楼主bianfu_2008()2005-08-16 15:58:07 在 Java / J2SE / 基础类 提问

问题1:  
  public   class   a{  
   
  public   void   fun1(int   i){}       //不是static函数  
   
  }  
   
  public   class   b   extends   a{  
   
  public   static   void   fun1(int   i){}     //是static函数  
   
  }  
   
  这样到底算   重载   还是   覆盖呢?  
   
  谢谢指教!!~~~  
   
  问题2:  
  public   class   a{       //不是static   class  
   
  public   void   fun1(int   i){}        
   
  }  
   
  public     static   class   b   extends   a{     //是static   class  
   
  public   void   fun1(int   i){}      
   
  }  
  请问这样   是   重载   还是   覆盖   呢?  
   
  ths。 问题点数:20、回复次数:17Top

1 楼shenpipi(皮皮)回复于 2005-08-16 16:07:03 得分 0

第一个,语法错误,你说是重载   还是   覆盖?  
  第二个,似乎只有内类才可以使用static修饰符吧?如果是内类的话,应该是覆盖.Top

2 楼skylovers(遥忘)回复于 2005-08-16 16:25:34 得分 0

public   class   A{  
  public   void   test(){}  
  public   void   test(int   i){}  
  public   void   test(String   a){}  
  }  
   
  这个叫重载.Top

3 楼yejsj(叶子)回复于 2005-08-16 16:30:17 得分 0

static   class  
  你这样定义,可以运行通过、、、  
  应该会报错吧Top

4 楼bob_thb(绿果)回复于 2005-08-16 16:30:27 得分 0

你从哪里看的这两个问题?Top

5 楼bianfu_2008()回复于 2005-08-16 17:08:55 得分 0

回复:  
         
          第一个是书上的一个题目,怎么会是错误的呢。。  
           
          我也   知道   判断   重载   与   覆盖   都要看   返回值   和   形参的。。  
   
          可是在前面加个   static   声明为   静态   函数   就不知道怎么   判断了。。Top

6 楼Dan1980()回复于 2005-08-16 17:11:09 得分 20

第1个问题:   都不是,   而是编译错误!   因为static无法覆盖也无法重载非static方法.  
   
  第2个问题:   同上,   编译错误!   static成员无法直接访问非static成员,   更不用说去继承它了.  
   
  忠告楼主:   任何与static有关的东西,   一般都与继承无关.   所以你的这两个问题没有什么讨论的必要了.   结贴吧,   哈哈Top

7 楼wangshenhai()回复于 2005-08-16 17:58:37 得分 0

顶一下Top

8 楼Xeric2003()回复于 2005-08-16 18:02:36 得分 0

同意 Dan1980(也该有一些作为了)   的讲法.Top

9 楼jiangshachina()回复于 2005-08-16 18:25:41 得分 0

说的好Top

10 楼mydeman(漫步者)回复于 2005-08-16 18:33:30 得分 0

http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=577  
  这是一篇关于重载和覆盖的文章,可以作为参考!Top

11 楼navy7148(飞尘)回复于 2005-08-16 18:41:45 得分 0

支持,都是错误的,不是变量还是方法,被定义为static就不能在改变了Top

12 楼mascotzhuang(基督山伯爵)回复于 2005-08-16 18:43:44 得分 0

 
  重载(overload)、重写(overwrite)、覆盖(override)  
  后两者的概念是相同的。前者是同一个类中,由于参数列表不同而方法名字相同。而后二者是子类中出现与父类完全一样的方法,从而覆盖了父类的方法。  
  class   overWriteSuper  
  {  
  public   void   sayHello()  
  {  
  System.out.println("I'm   in   super   class.");  
  }  
  }  
   
  class   overWriteSub   extends   overWriteSuper   {  
   
  public   void   sayHello()  
  {  
  System.out.println("I'm   in   sub   class.");  
  }  
   
  public   void   sayGoodBye()  
  {  
  System.out.println("Good-bye   all.");  
  }  
   
  public   void   sayGoodBye(String   str)  
  {  
  System.out.println("Good-bye   "+str+".");  
  }  
  }  
   
  public   class   overTest  
  {  
  public   static   void   main(String[]   args)   {  
  overWriteSuper   mySuper   =   new   overWriteSuper();  
  mySuper.sayHello();  
  overWriteSub   mySub   =   new   overWriteSub();  
  mySub.sayHello();  
  overWriteSuper   mySubOverWrite   =   new   overWriteSub();//即使类型是父类但是还是调用子类的方法  
  mySubOverWrite.sayHello();  
  }  
  }  
   
  显示结果:  
  I'm   in   super   class.  
  I'm   in   sub   class.  
  I'm   in   sub   class.Top

13 楼Qingjian(青见)回复于 2005-08-16 21:32:09 得分 0

这个不是函数重载     我要好好看书了   但我个人觉得这个问题问得实在没有意思   没有什么意义Top

14 楼bianfu_2008()回复于 2005-08-16 22:05:26 得分 0

回复:  
          Dan1980(也该有一些作为了)       说的好。。  
   
          看来我这   才真正   搞懂原理,,谢谢啦。。  
   
          看来书上     说的   很狡猾啊   ,他直接问   是重载   还是   覆盖。。没想到还没到边呢。呵呵。。  
   
  Top

15 楼shenpipi(皮皮)回复于 2005-08-18 12:09:35 得分 0

不知道还能不能回,但Dan1980关于第二个问题的回答是错误的.Top

16 楼shenpipi(皮皮)回复于 2005-08-18 12:16:37 得分 0

一个static的内部class是可以覆盖超类中的方法的.不过static也只能用在内部类中.Top

17 楼Nowish(看我能忍耐多久)回复于 2006-04-24 13:52:40 得分 0

??Top

相关问题

  • 虚函数 重载 覆盖 的问题。
  • 函数重载
  • 函数重载?
  • 如何重载FinalConstruct和FinalRelease函数?
  • 构造函数和[]重载的问题
  • C++中函数模板和函数重载的关系
  • 土问函数模板和函数重载有什么区别啊?
  • 虚拟函数和重载的题目,不懂啊!!!!!!!!!
  • 有关“=“重载和const成员函数的问题
  • 关于两个重载函数output(int x)和output(float x)

关键词

  • 函数
  • 重载
  • 覆盖
  • overwritesuper
  • overwritesub
  • 类
  • sayhello
  • 错误
  • fun1
  • 问题

得分解答快速导航

  • 帖主:bianfu_2008
  • Dan1980

相关链接

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

广告也精彩

反馈

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