Java面向对象 构造器的重载

目录

  • 创建类
    • 测试构造器的重载
    • 分析

创建类

public class Person02 {//属性:String name;int age;double height;//空构造器public Person02(){}public Person02(String name,int age,double height){//当形参名字和属性名字重名的时候,会出现就近原则://在要表示对象的属性前加上this.来修饰 ,因为this代表的就是你创建的那个对象this.name = name;this.age = age;this.height = height;}public Person02(String a,int b){name = a;age = b;}//方法:public void eat(){System.out.println("我喜欢吃饭");}
}

这段代码定义了一个名为Person02的Java类,这个类具有以下组成部分:

  1. 属性

    • name:一个String类型的属性,用于存储人的姓名。
    • age:一个int类型的属性,用于存储人的年龄。
    • height:一个double类型的属性,用于存储人的身高。
  2. 构造器

    • 空构造器:这是一个没有任何参数的构造器。
    • Person02(String name, int age, double height):这是一个带参数的构造器,它接受三个参数(姓名、年龄和身高)并使用这些参数的值初始化对象的相应属性。这里使用了this关键字来区分参数和属性。当参数和属性的名称相同时,使用this关键字可以明确表示你想要引用的是对象的属性而不是参数。
    • Person02(String a, int b):这是另一个带参数的构造器,它接受两个参数(可能代表姓名和年龄),并使用这些参数的值初始化对象的相应属性。
  3. 方法

    • eat():这是一个公共方法,它没有参数。当这个方法被调用时,它会输出“我喜欢吃饭”。

这个类提供了多种方式来创建Person02对象,并为其属性赋值。例如,你可以使用空构造器创建一个所有属性都使用默认值的对象,或者使用带两个参数的构造器创建一个只设置了姓名和年龄的对象,而身高保持默认值。使用带三个参数的构造器则可以同时设置所有属性。

测试构造器的重载

public class Test02 {//这是一个main方法,是程序的入口:public static void main(String[] args) {/*1.一般保证空构造器的存在,空构造器中一般不会进行属性的赋值操作2.一般我们会重载构造器,在重载的构造器中进行属性赋值操作3.在重载构造器以后,假如空构造器忘写了,系统也不会给你分配默认的空构造器了,那么你要调用的话就会出错了。4. 当形参名字和属性名字重名的时候,会出现就近原则:在要表示对象的属性前加上this.来修饰 ,因为this代表的就是你创建的那个对象*/Person02 p = new Person02();/*p.age = 20;p.name = "HaHa";p.height = 170.4;*/Person02 p2 = new Person02("HaHa",18,170.4);System.out.println(p2.age);System.out.println(p2.height);System.out.println(p2.name);}
}

在这里插入图片描述

分析

这段Java代码定义了一个名为Test02的类,该类包含一个main方法作为程序的入口点。在main方法中,代码创建了两个Person02类的对象,并对它们进行操作。以下是对代码的详细解释:

  1. Person02 p = new Person02();: 这行代码创建了一个Person02类的对象p,并使用无参数的构造器(空构造器)进行初始化。由于空构造器中没有进行任何属性赋值操作,因此对象p的属性将保持它们的默认值(namenullage0height0.0)。

  2. 注释掉的部分代码:这部分代码被注释掉了,但如果取消注释,它将为对象p的属性赋值。

    /*
    p.age = 20;
    p.name = "HaHa";
    p.height = 170.4;
    */
    
  3. Person02 p2 = new Person02("HaHa", 18, 170.4);: 这行代码创建了另一个Person02类的对象p2,并使用带有三个参数的构造器进行初始化。这个构造器接收姓名、年龄和身高作为参数,并将这些值赋给对象p2的相应属性。

  4. 接下来的三行代码打印对象p2的属性值:

    System.out.println(p2.age);    // 打印p2的年龄
    System.out.println(p2.height); // 打印p2的身高
    System.out.println(p2.name);   // 打印p2的姓名
    

    输出将是:

    20
    170.4
    HaHa
    

注释中还提到了一些关于Java构造器的重要概念:

  • 保证空构造器的存在:通常,为了确保类的可实例化性,会提供一个无参数的空构造器。这样,即使不提供任何参数,也可以创建类的对象。
  • 重载构造器:可以通过定义多个构造器来重载它们,每个构造器有不同的参数列表。这使得在创建对象时能以不同的方式初始化对象的属性。
  • 忘记写空构造器的情况:如果类中定义了其他构造器,但没有显式地定义空构造器,那么系统不会自动提供一个默认的空构造器。如果尝试调用不存在的空构造器,编译器会报错。
  • 使用this关键字:当构造器的参数名和类的属性名相同时,可以使用this关键字来区分它们。this引用当前对象,所以this.属性名表示的是对象的属性,而不是构造器的参数。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

外汇天眼:Vistova──假投顾带单获利400%,黑平台一再拖延不出金

在这个物价高涨的时代,愈来愈人意识到投资抗通胀的重要性,但因缺乏相关的专业知识而感到迷茫,甚至因此误信诈骗集团保证获利、稳赚不赔的话术,蒙受极大的金钱损失。 不久前,一位投资人向外汇天眼爆料Vistova这平台&…

入侵报警系统行业研究:智能化潮流助力市场维持正增长

侵报警系统intruder alarm system(IAS)利用传感器技术和电子信息技术探测并指示非法进入或试图非法进入设防区域(包括主观判断面临被劫持或遭抢劫或其他危急情况时,故意触发紧急报警装置)的行为,处理报警信息、发出报警信息的电子系统或网络。 当入侵行为…

pycharm 配置 conda 新环境

1. conda 创建新环境 本章利用pycharm将conda新建的环境载入进去 关于conda的下载参考上一章博文:深度学习环境配置:Anaconda 安装和 pip 源 首先利用conda 新建虚拟环境 这里按 y 确定 安装好如下:这里两行命令代表怎么激活和关闭新建的虚…

【Linux Day15 TCP网络通讯】

TCP网络通讯 TCP编程流程 接口介绍 socket()方法是用来创建一个套接字,有了套接字就可以通过网络进行数据的收发。创建套接字时要指定使用的服务类型,使用 TCP 协议选择流式服务(SOCK_STREAM)。 **bind()方法是用来指定套接字使…

[C/C++] -- JSON for Modern C++

JSON for Modern C(nlohmann/json)是一个流行的 C JSON 库,由德国开发者nlohmann编写。这个库提供了简洁而灵活的 API,使得在C中解析和生成JSON数据变得非常方便。 1.JSON简介 JSON(JavaScript Object Notation&…

论文精读--ViT

ViT的提出挑战了CNN在计算机视觉领域的绝对统治地位。ViT不仅在视觉领域开了一个新坑,因为它打破了cv与nlp之间的壁垒,所以还在多模态领域挖了一个大坑 题目是AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE,把…

(2)(2.14) SPL Satellite Telemetry

文章目录 前言 1 本地 Wi-Fi(费用:30 美元以上,范围:室内) 2 蜂窝电话(费用:100 美元以上,范围:蜂窝电话覆盖区域) 3 手机卫星(费用&#xff…

EDM营销平台哪个好?推荐的邮件营销平台?

EDM邮件营销平台有哪些?外贸EDM邮件营销平台有哪些? EDM营销平台已成为企业推广产品和服务的重要工具。但是,面对市场上众多的EDM营销平台,究竟哪个更好呢?下面,蜂邮EDM将从平台功能、用户体验、数据分析和…

SpringMVC原理(设计原理+启动原理+工作原理)

文章目录 前言正文一、设计原理1.1 servlet生命周期简述1.2 设计原理小结 二、启动原理2.1 AbstractHandlerMethodMapping 初始化 --RequestMapping注解解析2.2 DispatcherServlet 的初始化2.3 DispatcherServlet#initHandlerMappings(...) 初始化示例说明 三、工作原理 前言 …

DolphinScheduler本地安装

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

(十四)springboot实战——spring securtity安全框架原理之启动流程

前言 本节内容主要介绍spring securtity的初始化启动流程,spring security是通过EnableWebSecurity注解来启用的,在EnableWebSecurity注解中主要引入了WebSecurityConfiguration、SpringWebMvcImportSelector、OAuth2ImportSelector、HttpSecurityConfi…

存算一体:架构创新,打破算力极限

1 需求背景 在全球数据量呈指数级暴涨,算力相对于AI运算供不应求的现状下,存算一体技术主要解决了高算力带来的高能耗成本矛盾问题,有望实现降低一个数量级的单位算力能耗,在功耗敏感的百亿级AIoT设备上、高能耗的数据中心、自动驾…