java面向对象构造器--学习笔记

什麽是构造器?

构造器就是一种特殊的方法,特殊在:

  • 方法名 == 类名
  • 不能写返回值类

只要声明了这么一个特殊的方法,那么这个方法就不叫方法,叫做构造器了


构造器有什么特点?

  • 创建对象时,对象会去调用构造器
    Student s = new Student();
     执行上面这个语句时会做两个动作,new Student代表在堆区创建一个对象,()其实也代表一个动作,代表告诉前面创建的对象去调用哪个构造器(构造器也分多种,由重载区分,不理解重载可以看这个java方法重载--学习笔记-CSDN博客)执行
    举个栗子:
    这是一个学生类,它长这样:
    public class Student {
        String name;
        double score;
    
    
        //无参构造器
        public Student(){
            System.out.println("无参构造器执行");
        }
    
        //有参构造器
        public Student(String name, double score){
            System.out.println("有参构造器执行");
        }
    }
     

    然后new一个新对象:
     

    public class Test {
        public static void main(String[] args) {
            Student s = new Student();
        }
    }


    可以看到,在创建对象时,确实会根据小括号决定执行哪个构造器,由于小括号里面并没有填实参,所以调用了无参构造器
    假如我们在小括号里面输入一些参数,再看结果:

    public class Test {
        public static void main(String[] args) {
            Student s = new Student("泽予",666);
        }
    }


    可以看到,确实是根据小括号里面的实参来决定选择哪个构造器


构造器的应用场景:

  • 创建对象时,同时完对象成员变量的初始化赋值,说白了就是创建对象时把对象要处理的成员变量给它 

不使用构造器初始化情况:

        Student s = new Student();
        s.name = "泽予";
        s.score = 666;

可以看到是比较繁琐的,只是俩个还好,假如同时给几十上百个成员变量赋初值,难道每个都单独写出来吗?那太麻烦了

再看看使用构造器的情况,先完善一下构造器:

    //有参构造器
    public Student(String name, double score){
        this.name = name;
        this.score = score;
        System.out.println("有参构造器执行");
    }

不理解this的可以看这篇:https://blog.csdn.net/m0_71386740/article/details/135257881?spm=1001.2014.3001.5502

然后new一个对象的同时使用构造器赋初值:

Student s = new Student("泽予",666);

可以看到,同样的效果,以前用了三行,现在只需要一句语句就可以完成,非常清爽,优雅


构造器的注意事项:

  • 设计类时,如果不写构造器,java类会自动生成一个无参构造器
    设计一个Teacher类:
    public class Teacher {
        
    }

    可以看到,里面什麽都没有,然后我们再调用无参构造器:


    可以看到,这么做是没有任何问题的,我们知道,在new一个对象时小括号不填参数其实会自动调用无参构造器,但是类中并没有写无参构造器,说明在没有写无参构造器时系统确实会帮我们自动创建一个无参构造器

  • 一旦定义了有参构造器,系统就不会帮我们自动生成无参构造器了
    在Teacher中写一个有参构造器:

    可以看到已经开始报错了,我们再看看无参构造器调用语句

    这句话意思就是Teacher类中只有一个带String的有参构造器,你不能去调用无参构造器,所以说,在我们只写了有参构造器的情况下,去调用无参构造器是会报错的,这个时候最好是自己顺手写一个无参构造器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/285809.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

编程语言的进化:智能化与多样化的未来

作为沟通人类与机器的桥梁,编程语言的发展一直是技术进步的重要推动力。在技术的金字塔上,编程语言作为软件开发的基石,其每一次革新都将引领着信息时代的下一个潮流。从早期的机器码,到现代的高级语言,编程语言的进化…

搭建Python开发环境 Pycharm编程 + 嵌入 (保姆级教程)

搭建环境 这部分也比较简单,因为我们刚初始化的树莓派,就像一个婴儿一样,非常干净,所以流程很轻松。 建立远程连接后,终端输入以下指令: 更新树莓派 sudo apt-get update sudo apt-get upgrade -y 下载…

YOLOv7独家原创改进:提出一种新的Shape IoU,更加关注边界框本身的形状和尺度,对小目标检测也很友好 | 2023.12.29收录

💡💡💡本文改进:一种新的Shape IoU方法,该方法可以通过关注边界框本身的形状和尺度来计算损失,解决边界盒的形状和规模等固有属性对边界盒回归的影响。 💡💡💡对小目标检测涨点明显,在VisDrone2019、PASCAL VOC均有涨点 收录YOLOv7原创自研 https://blog.csdn…

揭秘真相!云汇优想短视频带货是真的吗?

在数字化浪潮的推动下,短视频带货已成为电商领域的新宠。许多平台如雨后春笋般涌现,云汇优想就是其中之一。然而,面对这样的新兴事物,我们不禁要问:云汇优想短视频带货是真的吗?今天,我们就来一…

异地环控设备如何远程维护?贝锐蒲公英解决远程互联难题

青岛某企业致力于孵化设备、养禽设备和养猪设备的研发、生产和服务,历经三十多年发展,目前已成长为行业主要的养殖装备及工程服务提供商,产品覆盖养殖产业链中绝大多数环节,涉及自动化设备、环控设备、整体解决方案等。 在实际应用…

【算法与数据结构】738、LeetCode单调递增的数字

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:暴力解法如下,思路很简单,从右往左遍历,但是会超时。   程序如下…

牛客周赛 Round 26 解题报告 | 珂学家 | 0-1 BFS + 状态机DP

前言 整体评价 T3是一道0-1 BFS题, 这样时间复杂度可以控制在O(n*m), 也可以用优先队列。 T4这类题型,在牛客Round周赛系列出现好多次了,要么状态机DP,要么容斥,如果n很大,就用矩阵幂优化。 欢迎关注 珂朵莉 牛客周…

pytorch深度学习笔记(共计169页,基于本人听完B站小土堆PyTorch深度学习快速入门教程所写)

一、笔记视频 pytorch深度学习(共计169页,基于本人听完B站小土堆PyTorch深度学习快速入门教程所写) 二、获取方式 方式一: 点击下面的链接 pytorch深度学习笔记 如果链接无法打开 直接复制下方链接即可 https://mall.bilibili.c…

【力扣题解】P501-二叉搜索树中的众数-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P501-二叉搜索树中的众数-Java题解🌏题目描述💡题解&#x1f…

惯性动作捕捉技术如何应用在数字人驱动、虚拟数字人直播、线下活动?

在数字人热潮影响下,数字人逐渐成为品牌营销中不可忽略的一个载体,品牌可以通过数字人进行内容和营销上的创新,拓宽营销边界,那品牌要如何将数字人驱动起来,应用在虚拟数字人直播、短视频、线下活动等场景?…

【接口自动化】写接口自动化case要注意的点!

可能有人会说,写接口的自动化CASE多简单了,写个参数发送请求完事了,还要注意啥? 没错,相比起UI自动化的case,你要去写各种定位器,接口自动化的case写起来确实容易多了。这也是接口自动化的一个…

STM32CubeMX教程13 ADC - 单通道转换

目录 1、准备材料 2、实验目标 3、ADC概述 4、实验流程 4.0、前提知识 4.1、CubeMX相关配置 4.1.1、时钟树配置 4.1.2、外设参数配置 4.1.3、外设中断配置 4.2、生成代码 4.2.1、外设初始化调用流程 4.2.2、外设中断调用流程 4.2.3、添加其他必要代码 5、常用函数…

大创项目推荐 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满…

网易云商冯旻伟:“大模型是下一代信息系统的大脑”

编者按 AIGC时代,大模型在智能客服领域的应用一直备受关注,其不断演进的技术给用户体验和业务效率带来了全新的可能性。 近日,我们有幸采访了网易云商AI技术线的负责人冯旻伟,深入了解了他们在智能客服方面的创新和实践。从文字交…

助听器有哪些附加功能可以让您听得更好?

助听器有哪些附加功能可以让您听得更好? 助听器的一些可选功能可提高您在特定情况下的听力: 降噪。所有助听器都有一定程度的降噪功能。降噪量各不相同。有些还提供风噪降低功能。定向麦克风。这些在助听器上对齐,以改善对来自您前方的声音…

buildadmin实现多级关联下拉效果

文章目录 最终效果开始重新渲染组件编辑渲染完结 最终效果 开始 popupForm.vue代码 <FormItem :label"t(interior.interiorApply.interior_index_id)" type"remoteSelect"v-model"baTable.form.items!.interior_index_id" prop"interi…

【银行测试】超细支付功能测试+测试点总结分析(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、支付功能怎么测…

Python从入门到精通专栏总结,下一步规划

Python从入门到精通专栏&#xff1a;http://t.csdnimg.cn/4Lals 时光飞逝&#xff0c;转眼间我们的Python从入门到精通专栏已经接近尾声。 在这里&#xff0c;向大家表示最诚挚的感谢。感谢你们一直以来对Python学习的热情&#xff0c;以及对本专栏的持续关注和支持。 回顾过去…

【字典树Trie】LeetCode-139. 单词拆分

139. 单词拆分。 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xff1a; 输入: s "leetcode&q…

2024,启动(回顾我的2023)

零.前言 打开博客想写个年度总结&#xff0c;发现已经半年没有更新文章了&#xff0c;排名从几千掉到了几万&#xff0c;不过数据量还是不错的。 时间过得可真快&#xff0c;2023年是充满动荡的一年&#xff0c;上半年gpt横空出世&#xff0c;下半年各种翻车暴雷吃瓜吃到嘴软…