My FAQ,最新最全的IT技术FAQ
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 未整理篇 | 技术讨论
  当前位置: > 程序开发 > 编程语言 > Java > 综合文章
【求助】这里的super();做什么用?
作者:未知 时间:2005-09-13 19:40 出处:ChinaUnix.net 责编:My FAQ
              摘要:【求助】这里的super();做什么用?

class Car{
         class Wheel{
          }
}
class PlaneWheel extends Car.Wheel{
      PlaneWheel(Car car){
               car.super();                //这句什么意思?为什么要这样写?
                                                 //内存构是什么样子的?
        }
     public static void main(String[] args){
                     Car car = new Car();
                     PlaneWheel pw = new PlaneWheel(car);
      }

 perryhg 回复于:2005-05-23 02:59:50
很多class在初始化的时候,会设置一些内部变量以供其他方法是用,当你继承了这些class的时候,默认不会自动调用这些初始化方法,只有你用 super()的时候,才会调用父类的方法对内部变量进行初始化。

 moonwalk_duyi 回复于:2005-05-23 17:40:51
调用父类直接就super(),不就可以了吗?
为什么car.super();  没明白为什么这么写~-.-||
好像不是你说的那个意思吧? :em02:

 lemonboy 回复于:2005-05-23 23:16:47
嘎嘎,是car的surper()???
看样子是这样子

 sakulagi 回复于:2005-05-24 14:42:53
因为如果直接写super(),调用的是Car.Wheel(),不是Car()

 beginer1 回复于:2005-05-24 17:42:04
这样也行呀?构造函数可以在类内任意调用?

 moonwalk_duyi 回复于:2005-05-24 20:14:35
[quote:b8edcfed97="sakulagi"]因为如果直接写super(),调用的是Car.Wheel(),不是Car()[/quote:b8edcfed97]
谢谢!:) :em02: 
你的图片好酷呀! :em09:

 sty 回复于:2005-05-25 09:55:45
必须这样写。
因为PlaneWheel存在的前提必须存在一个Car的实例,
所以car.super()仍然调用的是Car.Wheel的构造函数,
不可能 调用Car的构造函数,毕竟Car不是PlaneWheel
的父类

 sakulagi 回复于:2005-05-25 20:35:27
楼上的说的是对的。我理解错了。

楼上的朋友,希望以后常来捧场啊。

 netcafe 回复于:2005-05-26 16:04:12
PlaneWheel中掉用Wheel的无参构造函数是必然的,缺省的已经调用了super(),Car.super()就是额外调用Car的构造函数么。
在构造函数里print一段文字就知道了。

 netcafe 回复于:2005-05-26 16:18:39
才疏学浅,刚才理解错误了。调试了一下才明白。呵呵,海涵。

 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 myfaq.com.cn All rights reserved. www.myfaq.com.cn 版权所有