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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 佘天宇 中级黑马   /  2012-10-5 09:41  /  2186 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 佘天宇 于 2012-10-6 12:45 编辑
  1. package cn.itcast.problem;

  2. class Parsent{
  3.         Parsent(){
  4.                 System.out.println("-----Parsent------");
  5.                 //为什么结果当中这没有输出,不是说隐示的super()调用父类的空参数构造//这个没问题,失误 不好意思
  6.         }
  7.         public Parsent get(){
  8.                 return new Parsent();
  9.         }
  10. }

  11. class Sub extends Parsent{//
  12.         Sub(){
  13.                 //super();
  14.                 System.out.println("------sub------");
  15.         }
  16.         public Sub get(){//不是说不能改变覆盖(重写)方法的返回值类型了吗?
  17.                 return new Sub();
  18.         }
  19. }
  20. public class ForOverLoad {

  21.         
  22.         public static void main(String[] args) {
  23.                
  24.                 Sub sb=new Sub();
  25. /*        结果:
  26. *-----Parsent------//
  27. ------sub------

  28. *         
  29.         */        
  30.         }

  31. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

8 个回复

正序浏览
李铁 发表于 2012-10-5 11:48
我觉得你是把重载与重写理解没有弄清楚
首先要了解什么是重载与重写(覆盖)
重载(Overoad):如果在一个类 ...

楼上  写的武断了点吧  ,重写可以改变,也不全是吧  你将上面get()方法返回值类型为String的写给我看看
回复 使用道具 举报
{:soso_e127:}不好意思,这是写的失误,难怪觉得怎么
-----Parsent------
没有输出,
但是下面的问题依旧  见谅
回复 使用道具 举报
Parsent类与Sub类没有继承与被继承的关系。

class Parsent{
        Parsent(){
                System.out.println("-----Parsent------");
                //为什么结果当中这没有输出,不是说隐示的super()调用父类的空参数构造
        }
        public Parsent get(){
                return new Parsent();
        }
}

class Sub extends Parsent{
        Sub(){
                //super();
                System.out.println("------sub------");
        }
        public Sub get(){//不是说不能改变重载方法的返回值类型了吗?
                return new Sub();
        }
}
这个样子的时候就可以了。

结果为:

-----Parsent------
------sub------

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
我觉得你是把重载与重写理解没有弄清楚
首先要了解什么是重载与重写(覆盖)
重载(Overoad):如果在一个类中定义了多个同名的方法,但是有不同参数个数或者参数类型,顺序必须不同,重载与返回值没有关系;称为重重载
重写(覆盖Override)是子类与父类之间多态的一种表现,如果在子类中定义与其父类有相同的名称和参数,称为重写或者说是覆盖。
下面个简单的例子:
父类:
public class Father {
        //父类的构造方法
        Father(){
                System.out.println("QQQQ");
        }
         public Father get(){
                   return new Father();
           }
   public void fun1(){
           fun2();
   }
   public void fun2(){
           System.out.println("AAAA");
   }
   //重载fun2()方法,注意:重载与返回值类型没有关系。
   public int fun2(int i){
           return i;
   }
}
子类:
public class Child extends Father {
        //子类的构造方法
   Child(){
           //supuer();隐式的调用了父类的构造方法
           System.out.println("FFF");
   }       
   //get()是重写(覆盖)了父亲的方法,重写(覆盖)是可以改变返回值的类型的
   public Child get(){
           return new Child();
   }
  public void fun2(){
           System.out.println("CCC");
  }
   public static void main(String args[]){
           //成员方法在多态调用时,编译看左边,运行看右边
           Father child=new Child();
           child.fun1();
          
   }
}


输出结果:
QQQQ
FFF
CCC

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
明显的不对,在这里你根本就没有继承parent类,你总不能写个parent就说它是父类,写个sub就说它是子类吧,它们还需要继承关系,关系才能说明一切,表面看到的并不能说明什么
回复 使用道具 举报


class Parsent{
        Parsent(){
                System.out.println("-----Parsent------");
                //为什么结果当中这没有输出,不是说隐示的super()调用父类的空参数构造
        }
        public Parsent get(){
                return new Parsent();
        }
}

class Sub extends Parsent{//如果你不写extends那他就继承的是Object,那你还调用什么?
        Sub(){
                //super();
                System.out.println("------sub------");
        }
        public Sub get(){//不是说不能改变重载方法的返回值类型了吗?
                return new Sub();
        }
}
public class ForOverLoad{

        
        public static void main(String[] args) {
               
                Sub sb=new Sub();
/*        结果:
* ------sub------

*         
        */        
        }

}

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
override与overload的前提是继承,而你的sub是继承字Object类,并非继承自Parsent
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马