黑马程序员技术交流社区

标题: 请教:这种继承的情况是重载吗 [打印本页]

作者: ysunday    时间: 2013-11-10 22:25
标题: 请教:这种继承的情况是重载吗
  1. class Fu{
  2.         private int num;

  3.         public int getNum(){
  4.                 return this.num;
  5.         }
  6.         //注意这个函数
  7.         public int add(int a, int b){
  8.                 return a + b;
  9.         }
  10. }
  11. class Zi extends Fu{
  12.         //这句算重载吗
  13.         public long add(int a, long b){
  14.                 return a + b;
  15.         }
  16.         /*
  17.         好像重载是在这个类中有这样的函数
  18.         public long add(int a, long b){
  19.                 return a + b;
  20.         }

  21.         public int add(int a, int b){
  22.                 return a + b;
  23.         }
  24.         两个函数同时存在才算重载吧
  25.         */
  26.         public void show(){
  27.                 System.out.println(getNum());
  28.         }
  29. }
复制代码
请能真正确定答案的人回答,不要模糊的答案,老师说这“算”重载,但我觉得不是,谢谢大家


作者: 秦桂胜    时间: 2013-11-10 22:39
是重载,类Zi继承了add(int x,int y)方法。
代码如下
  1. class Fu{
  2.         private int num;

  3.         public int getNum(){
  4.                 return this.num;
  5.         }
  6.         //注意这个函数
  7.         public int add(int a, int b){
  8.                 return a + b;
  9.         }
  10. }
  11. class Zi extends Fu{
  12.         //这句算重载吗
  13.         public long add(int a, long b){
  14.                 return a + b;
  15.         }
  16.         /*
  17.         好像重载是在这个类中有这样的函数
  18.         public long add(int a, long b){
  19.                 return a + b;
  20.         }

  21.         public int add(int a, int b){
  22.                 return a + b;
  23.         }
  24.         两个函数同时存在才算重载吧
  25.         */
  26.         public void show(){
  27.                 System.out.println(getNum());
  28.         }
  29. }
  30. public class test{
  31.          public static void main(String[] args){
  32.                  Zi z=new Zi();
  33.                  z.add(1, 1);//add(int a, int b)
  34.                  z.add(1, 1l);
  35.          }
  36. }
复制代码

作者: ysunday    时间: 2013-11-10 23:38
虽然你调用了这两个函数,但是我觉得不是 ,入果 如你所说 ,那么子类中继承了那个方法 ,那么子类也可以继承父类得 getNum,但是很明显,getNum是父类得方法,虽然子类可以访问父类得方法,但我感觉并不等同于子类中拥有这个方法吧
如果继承了getNum那个塔返回的是this.num显然,这个属性是在父类中得到的 ,而父类得这个属性是私有的,这怎么解释
作者: 硬件之家    时间: 2013-11-10 23:59
应该是重载,因为子类继承了父类,子类拥有父类的属性和方法。
作者: 轩辕迪卡    时间: 2013-11-11 08:49
哎,大家觉得学技术为了什么啊?为了搞科学研究吗?就是为了找一份工作嘛!
毫无疑问,这个确实是重载,重载可以重载父类的方法,原因楼上的一些人已经说过了,继承私有变量也能继承,只是不能直接访问,你可以用debug查看继承的对象。
我想说的是,楼主啊,有些知识细节太过钻研没有意义啊,我只要知道这样可以,那样不可以就好了,至于是不是重载, 没有关系吧?真正开发的时候客户也不会关心是不是重载做的吧?
而且我觉得重载这种东西如果自己吃不准最好不要用,到时候自己都不知道这个函数是干什么的了,重载最有用的地方应该就是构造函数。
作者: ysunday    时间: 2013-11-11 20:25
轩辕迪卡 发表于 2013-11-11 08:49
哎,大家觉得学技术为了什么啊?为了搞科学研究吗?就是为了找一份工作嘛!
毫无疑问,这个确实是重载,重 ...

你说的很对,但是我就是想了解下到底是怎么回事,憋在心里不舒服,不过也谢谢你的提醒 谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2