java技术专题综述之构造方法篇

java技术专题综述之构造方法篇

ID:15726940

大小:42.50 KB

页数:5页

时间:2018-08-05

java技术专题综述之构造方法篇_第1页
java技术专题综述之构造方法篇_第2页
java技术专题综述之构造方法篇_第3页
java技术专题综述之构造方法篇_第4页
java技术专题综述之构造方法篇_第5页
资源描述:

《java技术专题综述之构造方法篇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、JAVA技术专题综述之构造方法篇类的继承机制使得子类可以使用父类的功能(即代码),并且子类也具有父类的类型。下面介绍类在继承关系上的初始化的顺序问题。示例1:classSuperClass{SuperClass(){System.out.println("SuperClassconstructor");}}publicclassSubClassextendsSuperClass{SubClass(){System.out.println("SubClassconstructor");}publicstaticvoidmain(String[]args){SubClasssub=newSub

2、Class("sub");}}在JDK下编译此程序不能成功。正如上例中说的:程序在初始化子类时先要寻找其父类的默认构造方法,结果没找到,那么编译自然不能通过。解决这个问题有两个办法:1.在父类中增加一个默认构造方法。2.在子类的构造方法中增加一条语句:super(str);且必须在第一句。这两种方法都能使此程序通过编译,但就本程序来说运行结果却不相同。第1种方法的运行结果是:Subwithastring.第2种方法的运行结果是:Superwithastring.Subwithastring.第2种解决方法实际上是指定编译器不要寻找父类的默认构造方法,而是去寻找带一个字符串为参数的构造方法。

3、下面介绍对象的初始化顺序问题。示例3:classOne{One(Stringstr){System.out.println(str);}}classTwo{Oneone_1=newOne("one-1");Oneone_2=newOne("one-2");Oneone_3=newOne("one-3");Two(Stringstr){System.out.println(str);}}publicclassTest{publicstaticvoidmain(String[]args){System.out.println("Testmain()start...");Twotwo=newTw

4、o("two");}}输出结果:Testmain()start...one-1one-2one-3two在main()方法中实例化了一个Two类的对象。但程序在初始化Two类的对象时,并非先调用Two类的构造方法,而是先初始化Two类的成员变量。这里Two类有3个成员变量,它们都是One类的对象,所以要先调用3次One类的相应的构造方法。最后在初始化Two类的对象。示例4:classOne{One(Stringstr){System.out.println(str);}}classTwo{Oneone_1=newOne("one-1");Oneone_2=newOne("one-2");s

5、taticOneone_3=newOne("one-3");Two(Stringstr){System.out.println(str);}}publicclassTest{publicstaticvoidmain(String[]args){System.out.println("Testmain()start...");Twotwo_1=newTwo("two-1");System.out.println("------------");Twotwo_2=newTwo("two-2");}}输出结果:Testmain()start...one-3one-1one-2two-1-----

6、-------one-1one-2two-2如果一个类中有静态对象,那么它会在非静态对象前初始化,但只初始化一次。非静态对象每次调用时都要初始化。示例5:classOne{One(Stringstr){System.out.println(str);}}classTwo{Oneone_1=newOne("one-1");Oneone_2=newOne("one-2");staticOneone_3=newOne("one-3");Two(Stringstr){System.out.println(str);}}publicclassTest{staticTwotwo_3=newTwo("t

7、wo-3");publicstaticvoidmain(String[]args){System.out.println("Testmain()start...");Twotwo_1=newTwo("two-1");System.out.println("------------");Twotwo_2=newTwo("two-2");}}输出结果:one-3one-1one-2two-3Testmain()start..

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。