Java中类的构造方法
发布日期:2021-06-29 11:11:05
浏览次数:2
分类:技术文章
本文共 1850 字,大约阅读时间需要 6 分钟。
constructor;构造函数。
在创建对象的时候,对象成员可以由构造函数方法进行初始化。
new对象时,都是用构造方法进行实例化的;例如;Test test = new Test("a"); //Test("a");其中这个就是构造函数,“a”为构造方法的形参;
构造方法的方法名必须与类名一样。构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。构造方法不能作用是完成对象的初始化工作,他能够把定义对象时的参数传递给对象的域。构造方法不能由编程人员调用,而要系统调用。构造方法可以重载,以参数的个数,类型,或排序顺序区分。
具体用法,代码实现。
1;单个构造函数方法;’
2;多个构造函数方法
(例子为;带参数与不带参数)3;关于继承类的构造方法的调用;
先看事例; 我第一次看到结果的时候好惊讶的,怎么都调用了哈。看了知识点才知道。 在Subtine的主方法中只调用子类构造方法,实例化子类对象并且在子类构造方法中,没有调用父类的构造方法的任何语句。但是在实例化对象时,它相应的调用了父类构造方法,在结果中还可以看到调用构造方法的顺序,首先是顶级,再继续往下直达本身类。也就是说实例化子类的时候,要首先实例化父类对象,然后在实例化子类对象,所以在子类构造方法调用父类构造方法前,父类已经实例化了。 拓展一下。package text_4_1;public class Parent { Parent(int a){ //就是将无参数构造方法改成有参数的。 System.out.println("调用父类Parent构造方法" + a); }}package text_4_1;public class Subparent extends Parent{ Subparent(){ System.out.println("调用子类Subparent的构造方法"); }}package text_4_1;public class Subtine extends Subparent{ Subtine(){ System.out.println("调用子类Subtine构造方法"); }}package text_4_1;public class Main { public static void main(String[] args){ Subtine subtine = new Subtine(); }}
这样的代码将会报错;//就是将父类Parent类无参数构造方法改成有参数的。
Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor//隐式的超级构造函数()是未定义的。必须显式地调用另一个构造函数
意思就是在子类调用构造函数时,必须先调用父类构造函数,因为无参数的构造函数,编译器会自动调用,也就是第一种情况不会报错。但是有参数的,就必须要利用Super的方法来调用。如果不进行调用那么将会报错。
将Subparent类改成。package text_4_1;public class Subparent extends Parent{ Subparent(){ super(5);//调用了其父类就不会报错了。 System.out.println("调用子类Subparent的构造方法"); }}//备注一下,调用父类构造方法就是;super();//就ok了。
还补充一点,关于构造方法的可扩展性;
查看过源码的应该都发现过jdk的编码人员会在一个类中建立多个构造方法;然而他的作用就是提高可扩展性; 这么多构造方法,他们之间并且还有联系;通过this()来调用自己类的其他构造方法,来减少代码的复制,增大程序的可读性; 至于怎么来进行封装;举个例子; 构造方法的可扩展性就表示在这里; 可以多多个构造方法;根据不同的参数决定调用哪个;带来很大的可扩展性 刚试了一下notepad++;然而直接爆出中文乱码,搞了好久才搞清楚;原因是;国标码和ANSI之间的不兼容;
因为刚学,有什么不足的后期补上。
望路过的大神,指点一二。转载地址:https://blog.csdn.net/zw1996/article/details/52878270 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月20日 13时53分35秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PCB走线角度为90度到底行不行?
2019-04-29
这个 17 岁的黑客天才,破解了第一代 iPhone!
2019-04-29
在STM32价格疯长下,哪些国产32可以替代?
2019-04-29
半导体芯片原厂涨价及调价声明新增了这些!
2019-04-29
为什么你学C++这么难?
2019-04-29
无人机破巡检难题,秒变电网卫士
2019-04-29
五年,我成为了一名嵌入式工程师。
2019-04-29
2020年电赛题目,命题专家们怎么看?
2019-04-29
PCB元器件摆放不可忽略的10个技巧
2019-04-29
掌握AI核心技术没有秘籍,能自己创造就是王道
2019-04-29
大学老师的月薪多少?实话实说:4万多一点……
2019-04-29
2020年电赛题目,命题专家权威解析!
2019-04-29
如何掌握“所有”的程序语言?没错,就是所有!
2019-04-29
39岁单身程序员入住养老院
2019-04-29
写论文,这个神器不能少!
2019-04-29
我在哥大读博的五年,万字总结
2019-04-29
本科、硕士、博士,究竟有何区别?
2019-04-29
如果我的实验室也这样布置,那多好。
2019-04-29
现在做硬件工程师还有前途吗?
2019-04-29
用 50 种编程语言写“Hello,World!”
2019-04-29