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

关于构建器问题?

    来源: 互联网  发布时间:2015-10-11

    本文导语:  public class Company{ public Company(){ System.out.println("Company: 0"); } public Company(int i){ this(); System.out.println("Company: 1"); } public static void main(String args[]){ Research s=new Research(); Research r=new Research(1999); } } class...

public class Company{
public Company(){
System.out.println("Company: 0");
}

public Company(int i){
this();
System.out.println("Company: 1");
}

public static void main(String args[]){
Research s=new Research();
Research r=new Research(1999);
}
}

class Research extends Company{

public Research(){
System.out.println("Research: 0");
}

public Research(int i){
System.out.println("Research: 1");
}
}


为什么输出是:
Company:0
Research:0
Company:0
Research:1
而不是:
Company:0
Research:0
Company:0
Company:1(这里是因为Company(int i)调用了this()方法)
Research:1

|
程序在初始化子类时先要寻找其父类的默认构造方法,如果父类定义了其他非默认构造方法却没定义默认构造方法,程序错误;解决这个的办法就是定义一个默认构造方法或在子类构造方法中第1句中调用super(i)(根据父类构造函数的形式写)。这里就是子类初始化时调用的是父类
public Company(){
System.out.println("Company: 0");
}
这个默认构造方法,并没有调用
public Company(int i){
this();
System.out.println("Company: 1");
}

|
子類在實例化時只能調用父類的默認構造器,也就是沒有參數的構造器,所以
new Research(1999)時,只能調用Company中的 Public Company().

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • docker应用之利用Docker构建自动化运维
  • 项目构建工具 Phing
  • ​Docker 容器数据管理,链接容器,构建私有库
  • 自动构建工具 Anthill
  • docker下通过Dockerfile指令构建镜像的指令选项介绍
  • 软件构建系统 ooRexx
  • 构建工具 Smooth Build
  • 关于构建器?!
  • 构建用户界面的 JavaScript 库 ReactJS
  • 软件构建系统 BSDBuild
  • 快速构建网站模板 Pondasee
  • 交互式地图构建 Majuro.JS
  • 元构建工具 BuildBoost
  • 如何在JB5下构建一个连接池?
  • PHP表单构建工具 FormBuilder
  • 嵌入式固件构建工具 Build Gear
  • C项目构建管理辅助工具 buildc
  • 项目构建工具 Remake
  • 软件构建和发布管理系统 Parabuild
  • 源码构建工具 TMake
  • Qt构建工具 Qmake


  • 站内导航:


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

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

    浙ICP备11055608号-3