- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
个人对Java构造方法调用的总结
个人对Java构造方法调用的总结
1.构造方法必须与定义它的类有完全相同的名字。构造方法没有返回类型,也没有void。
?
2.类可以不声明构造方法,这时类中隐含声明了一个方法体为空的无参构造方法。但当类有明确声明构造方法时,它就不会自动生成。
?
3.构造方法的调用:子类首先要调用父类的构造方法才能继承父类的属性和方法。如果子类的构造方法中没有显式地调用父类的构造方法,则系统默认调用父类无参数的构造方法。说说3种情况:
父类和子类都没有显式定义构造方法或者只定义了无参构造方法,这种情况下没有问题,Java 会顺着继承结构往上一直找到 Object,然后从 Object 开始往下依次执行构造函数。以下两个例子效果一样,只是Example2有相关输出:
Example1
public class test1 {??? public static void main(String[] args){??? ??? A example =new A();??? }}
?
class A extends B{}
?
class B{}
?
Example2:
public class test {??? public static void main(String[] args){??? ??? A example =new A();??? }}
?
class A extends B{??? public A(){??? ???? System.out.println(As constructor is invoked.);??? }}
class B{??? public B(){??????? System.out.println(Bs constructor is invoked.);??? }
}
输出:Bs constructor is invoked
As constructor is invoked
?
父类只定义有参构造方法,那么无论子类如何定义,编译都会报错,因为父类缺少了默认无参构造方法,需要显式定义。
public class test {??? public static void main(String[] args){??? ??? A example =new A(3);??? }}
?
class A extends B{??? public A(int a){??? ?? System.out.println(As constructor is invoked.+a=+a);??? }}
?
class B{??? private int b=0;??? //public B(){??? //??? System.out.println(Bs constructor is invoked.);??? //}??????? public B(int b){??? ??? System.out.println(Bs constructor is invoked.+b=+b);??? }}
把注释符去掉就可以编译,输出:Bs constructor is invoked. As constructor is invoked.a=3
?
③在父类只有有参构造方法而没有无参构造方法时,可以用super(参数)来调用父类构造方法,但super无参时需要父类的无参构造方法。
public class test {??? public static void main(String[] args){??? ??? A example =new A(3);??? }}
?
class A extends B{??? public A(int a){??? ??? super(a);??? ??? System.out.println(As constructor is invoked.+a=+a);??? }}
class B{??? private int b=0;??????? public B(int b){??? ??? System.out.println(Bs constructor is invoked+b=+b);??? }
}
输出:Bs constructor is invoked.b=3??????? As constructor is invoked.a=3
此处指定用super(3)调用public B(int b),所以就有如下输出:
Bs constructor is invoked.b=3As constructor is invoked.a=3
您可能关注的文档
最近下载
- 市场营销策划服务合同.docx VIP
- 传统文化古琴课件.ppt VIP
- 《中国文化概况》带翻译版.pdf VIP
- 部编版六年级语文上册《竹节人》PPT课件.pptx VIP
- 人民医院门诊大楼智能化弱电系统设计方案.doc VIP
- 铁路工程建设通用参考图 10KV架空电力线路铁塔安装图【图号:通电(2015)0007-Ⅰ】-2.pdf VIP
- 中国单轨(空轨)行业市场前景预测及投资战略研究报告.docx
- 原材料、中间产品和工程设备进场核验和验收监理实施细则(水利水电工程.pdf VIP
- GB50217-2018 电力工程电缆设计标准.pdf VIP
- 公务员考试省考面试题本和参考答案(考官用第一套)模拟题.docx VIP
文档评论(0)