CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

新手学java,问一个关于子类的构造函数的问题!谢谢!!

楼主bryantd(Delphi菜鸟)2005-08-01 21:54:06 在 Java / J2SE / 基础类 提问

想问一个问题,子类既然是继承了超类,也就继承了超类中的构造函数,那为什么不能直接调用子类中已经继承下来的构造函数呢?比如:  
  class   SuperClass{  
      private   String   myName;  
      private   int   myAge;  
      SuperClass(String   name,   int   age)  
          {  
              myName=name;  
              myAge=age;  
          }  
       
      SetPerson(String   name,   int   age)  
          {  
              myName=name;  
              myAge=age;  
          }  
  }  
   
  class   SubClass   extends   SuperClass{  
      public   static   void   main(String   args[])  
          {  
              SubClass   oa=newSubClass("AA",22);  
          }  
  }  
   
  改为:  
  class   SubClass   extends   SuperClass{  
      SubClass(String   name,   int   age)  
          {  
              super(name,age);  
          }  
      public   static   void   main(String   args[])  
          {  
              SubClass   oa=newSubClass("AA",22);  
          }  
  }  
  后可以通过。 问题点数:5、回复次数:4Top

1 楼believefym(feng)回复于 2005-08-01 22:10:20 得分 0

因为子类调用构造函数必然调用父类的构造函数,一般无参的就默认了,有参数就要显式调用,比如super(name,age);  
   
  你的父类只有带参的构造函数,子类调用构造的函数找不到可以调用的父类构造函数,自然出错了Top

2 楼bryantd(Delphi菜鸟)回复于 2005-08-01 22:24:30 得分 0

如果按照楼上的说法,是不是程序改成这样就可以了呢?(我没测试呢)  
  class   SuperClass{  
      private   String   myName;  
      private   int   myAge;  
      SuperClass()  
          {  
              myName="AA";  
              myAge=22;  
          }  
       
      SetPerson(String   name,   int   age)  
          {  
              myName=name;  
              myAge=age;  
          }  
      public   void   Prt()  
          {  
              System.out.println("Name="+name+"   Age="+age);  
          }  
  }  
   
  class   SubClass   extends   SuperClass{  
      public   static   void   main(String   args[])  
          {  
              SubClass   oa=newSubClass();  
              oa.prt();              
          }  
  }Top

3 楼chris_tina_zhang(Java初学,请大家帮忙,谢谢!)回复于 2005-08-02 07:10:00 得分 0

兄弟你的方法名的命名规则没有掌握啊  
  改了一下可以通过  
  class   SuperClass{  
      private   String   myName;  
      private   int   myAge;  
      SuperClass()  
          {  
              myName="AA";  
              myAge=22;  
          }  
       
      void   setPerson(String   name,   int   age)  
          {  
              myName=name;  
              myAge=age;  
          }  
      public   void   prt()  
          {  
              System.out.println("Name="+myName+"   Age="+myAge);  
          }  
  }  
   
  class   SubClass   extends   SuperClass{  
      public   static   void   main(String   args[])  
          {  
              SubClass   oa=new   SubClass();  
              oa.prt();              
          }  
  }  
  Top

4 楼bryantd(Delphi菜鸟)回复于 2005-08-02 10:48:57 得分 0

一着急写错了!哈哈。见笑见笑。  
  以前是写pascal的,老觉得procedure不用返回值类型……Top

相关问题

  • php中怎样在子类里访问超类构造函数,(不是用parent调用超类的构造函数名),就是如java的super(),
  • 子类如何继承父类的构造函数?
  • 孩子类和祖先类的构造函数怎么运行?
  • 如何在父类中约定子类的构造函数
  • 将构造函数定义为private与其子类的构造函数有什么关系
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • 子类实例化时,如何做不会调用父类的构造函数?
  • 为何我写的CWinThread类的子类只能执行构造函数?
  • Canvas类的子类中的pain()方法与构造函数 的问题?
  • java有静态构造函数吗?

关键词

  • 函数
  • 子类
  • myage
  • 构造函数
  • superclass
  • myname
  • subclass
  • 调用
  • age
  • newsubclass

得分解答快速导航

  • 帖主:bryantd

相关链接

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

广告也精彩

反馈

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