当前位置:  技术问答>java相关

[oo问题大讨论] 关于构造器调用的怪题!

    来源: 互联网  发布时间:2015-03-16

    本文导语:  class A {   public int Avar;   public A() {       System.out.println("AAA");       doSomething();   }   public void doSomething() {       Avar = 1111;       System.out.println("A.doSomething()");   } } public class Test1 extends A { ...

class A {
  public int Avar;
  public A() {
      System.out.println("AAA");
      doSomething();
  }
  public void doSomething() {
      Avar = 1111;
      System.out.println("A.doSomething()");
  }
}

public class Test1 extends A {
  public int Bvar = 2222;
  public Test1() {
      System.out.println("BBB");
      doSomething();
      System.out.println("Avar=" + Avar);
  }
  public void doSomething() {
      System.out.println("Bvar=" + Bvar);
  }
  public static void main(String[] args) {
      new Test1();
  }
}

如果这样运行,结果是:

AAA
Bvar=0
BBB
Bvar=2222
Avar=0

如果屏蔽掉类A的默认构造器:变成下面这种样子:
class A {
  public int Avar;
  /*public A() {
      System.out.println("AAA");
      doSomething();
  }*/
  public void doSomething() {
      Avar = 1111;
      System.out.println("A.doSomething()");
  }
}

public class Test1 extends A {
  public int Bvar = 2222;
  public Test1() {
      System.out.println("BBB");
      doSomething();
      System.out.println("Avar=" + Avar);
  }
  public void doSomething() {
      System.out.println("Bvar=" + Bvar);
  }
  public static void main(String[] args) {
      new Test1();
  }
}

运行结果是:

BBB
Bvar=2222
Avar=0

但是sun的sl-275的培训资料里面是这样讲的:

Often you define a constructor that takes arguments and you want to
use those arguments to control the construction of the parent part of
an object. You can invoke a particular parent class constructor as part
of a child class initialization by “calling” the keyword super from the
child constructor’s first line. To control the invocation of the specific
constructor, you must provide the appropriate arguments to super().
When there is no call to super with arguments, the default parent
constructor (that is, the constructor with zero arguments) is called
implicitly. In this case, if there is no default parent constructor, a
compiler error results.

也就是说在带有参数的构造器调用时,如果没有指明,自动调用super(),但是上例中的b的构造器并不带有参数阿,为什么会调用super ()阿

请各位高手发表意见阿

|
这个问题我早就问过了

唉,复杂的多态性

你查询一下"关于initializer的"

|
Patrick_DK说的对,查一下就知道了,我也问过此问题,也是Patrick_DK的帮助,在此多谢了.

|
不客气,大家共同进步:)

    
 
 

您可能感兴趣的文章:

  • 有关构造器和方法的问题
  • 有关构造器的问题??
  • 构造器问题
  • 关于传递参数到匿名类的构造器的问题
  • 构造器的小问题,立刻在线送分!!!来者有分!!!
  • 关于超类构造器的问题
  • 设计构造器与一般方法的访问控制问题!
  • 有关Java构造函数的问题之一——缺省性
  • Bean的构造函数问题
  • 对象数组的构造函数调用问题
  • 构造函数的问题,在线等待
  • 高手请进,内核构造UDP包的问题
  • java基础问题:如何构造类
  • 关于PKCS#12如何构造的问题
  • QT_构造函数重载_重复定义问题
  • 构造数据包的问题
  • 有关Java构造函数的问题之三——继承性
  • 有关Java构造函数的问题之二——实例性
  • 初学者的问题--关于构造函数
  • Java中子类调用父类构造方法的问题分析
  • 高分请教一个概念性问题关于接口与构造函数方法?
  • 有关Java构造函数的问题之四——冲突性
  • 新学java,遇到一个构造函数的问题,请教!
  • 在线等待--关于File类的构造函数问题
  • linux下构造TCP数据包的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 为什么我的BEAN 在WIN2000中调用没有问题,但在LINUX中调用有问题
  • 关于jsp调用javabean的问题!调用是成功了,但是有小问题!
  • 在jbuilder中调用一bean连接数据库没有问题,在jsp中调用就连接不上数据库
  • 关于《Unix网络编程》在ubuntu 8.04下运行的问题,服务器端阻塞在accept调用,客户端阻塞在connect调用,导致连接失败
  • (菜鸟飞飞)问个关于软中断和系统调用的问题
  • 关于Linux系统调用的问题!
  • 请教一个定时调用问题
  • 由于问题变化了,所以重新个贴子,是关于线程间函数调用及串口接收数据的问题?
  • 急,急,急-----------ejb部署调用问题????
  • so动态库相互调用问题?
  • C语言中函数声明与调用问题
  • 关于RPC远程过程调用的问题
  • cgi 中调用bash脚本问题?急 急 急
  • linux系统调用问题
  • 在*.so 中调用*.ko的函数的问题
  • linux系统调用表修改问题
  • 问一个很奇怪的线程调用的问题
  • 频繁调用popen的问题
  • JSP调用EJB的问题,急!急!急!
  • java调用存储过程问题。
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 简单问题简单问题简单问题简单问题
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 小问题,急问题,重大问题!!!
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 弱弱的一问,linux下的中文问题及网络问题,分不是问题
  • 八个问题帮你快速了解Docker
  • 请教两个小问题:一个cgywin下使用vi的问题,另一个socket的问题
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • 网页的编码问题!或者java的编码问题,由此引出一条解决中文问题的思路
  • nginx Windows版相关问题及使用说明


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3