网站升级改版需要几天,网站编程电子书,自己怎么建设网站,上海关键词排名提升点击上方蓝色关注我们#xff01;先来看看什么是构造函数#xff08;方法#xff09;#xff1a;是一种特殊的方法#xff0c;特殊之处就在于它没有返回类型#xff0c;void也不可以有。且方法名与类名完全相同。主要是用来创建对象时初始化对象#xff0c;也就是为对象… 点击上方蓝色关注我们先来看看什么是构造函数方法是一种特殊的方法特殊之处就在于它没有返回类型void也不可以有。且方法名与类名完全相同。主要是用来创建对象时初始化对象也就是为对象成员变量赋初始值。其特点如下方法名与类型完全相同构造方法没有返回值void也不可以。构造方法不能被直接调用必须通过new运算符在创建对象时才会自动调用在java中当创建一个类时通常程序会默认创建一个无参的构造方法即public 类名(){}。但是该类中有带参的构造方法时程序员必须手动创建一个无参的构造方法。至此相信大家对构造方法有个初步的了解。今天要讲的是避免在构造函数中初始化其他类言外之意就是构造方法你别整的太复杂了出了会大大影响类的初始化效率之外还会出现意向不到的效果如下宠物类父类/***
*
* 项目名称BianChengXiGuan
* 类名称Pet
* 类描述父类宠物类
* 创建人Mu Xiongxiong
* 创建时间2020-8-15 下午1:25:11
* 修改人Mu Xiongxiong
* 修改时间2020-8-15 下午1:25:11
* 修改备注
* 个人博客https://blog.csdn.net/qq_34137397
* 微信公众号雄雄的小课堂
* version
**/
public class Pet {/**** 构造函数* discription* author Mu Xiongxiong* created 2020-8-15 下午1:33:28* 个人博客https://blog.csdn.net/qq_34137397* 微信公众号雄雄的小课堂*/public Pet(){new People();}}小狗类子类package org.test;/***
*
* 项目名称BianChengXiGuan
* 类名称Dog
* 类描述子类小狗类
* 创建人Mu Xiongxiong
* 创建时间2020-8-15 下午1:25:32
* 修改人Mu Xiongxiong
* 修改时间2020-8-15 下午1:25:32
* 修改备注
* 个人博客https://blog.csdn.net/qq_34137397
* 微信公众号雄雄的小课堂
* version
**/
public class Dog extends Pet {/**** Description: 该方法的主要作用吃* Title: eat* param 设定文件* return 返回类型void* throws* 个人博客https://blog.csdn.net/qq_34137397* 微信公众号雄雄的小课堂*/public void eat(){System.out.println(小狗在吃饭);}
}其他类人类package org.test;
/***
*
* 项目名称BianChengXiGuan
* 类名称People
* 类描述人类其他的类
* 创建人Mu Xiongxiong
* 创建时间2020-8-15 下午1:27:09
* 修改人Mu Xiongxiong
* 修改时间2020-8-15 下午1:27:09
* 修改备注
* 个人博客https://blog.csdn.net/qq_34137397
* 微信公众号雄雄的小课堂
* version
**/
public class People {/**** 构造函数* discription* author Mu Xiongxiong* created 2020-8-15 下午1:33:11* 个人博客https://blog.csdn.net/qq_34137397* 微信公众号雄雄的小课堂*/public People(){new Dog();}}测试类TestMainpackage org.test;public class TestMain {public static void main(String[] args) {Dog d new Dog();d.eat();}}这几个类的业务其实不难大致的浏览一遍之后你会发现在Pet类的构造方法中初识化了People类在People类的构造方法中初识化了Dog类最后在测试类中调用Dog类的eat方法你觉得代码的运行结果是什么呢是“小狗在吃饭” 运行结果如下显而易见无法运行并且报java.lang.StackOverflowError错误栈内存分析一下为什么报此错。我们先从main入手查看首先初始化了Dog类那么程序必然会调用Dog的无参构造方法系统默认创建了此时JVM会默认调用其父类Pet的构造方法那么继续看Pet的构造方法又调用了初识话了People类那么就会调用People类的无参构造方法然后在继续调用Dog类的无参构造方法JVM在调用父类的无参构造方法在初始化People类再调用Dog构造方法……一直在循环就造成了死循环这个异常固然就出来了。所以切记不要在构造方法里面初始化其他类别不以为然当你的项目大了的时候你不可能像看这个小案例似的一眼欲穿。参考文章《编写高质量的代码改善java程序的151个建议》作者秦小波支持作者赞赏就不用啦生活都不易右下角的“在看/赞”点一下如果感觉文章不错记得分享到朋友圈让更多人知道往期精彩常用插件免费下载一未完连载中……接口中可以写实现代码吗可以但是……一般不要写最全、最详细的配置jdk十步法新机必装那些你不知道的实用技软件在这里文末免费获取