【构造函数】解析构造函数的作用

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

百度一下:构造函数


构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载


那么,为什么要在创建对象时初始化对象呢?又是如何实现的呢?接下来我将用小baby的例子说明:

  实例化一个小baby!
  黑户型:我们先定义好一个类,需要时再给它赋值;(小孩出生后再起名字)

class Baby{
  int id; //身份证
  String  name;  //名字
  public void cry(){
      System.out.println(name+"哭的鼻涕都流出来啦!!!");
    }
  }
class Demo6
{
  public static void main(String[] args) 
  { 
    //创建一个baby对象
    Baby b =  new Baby();   //婴儿诞生
    //赋予属性值
    b.id=1;
    b.name="石头";
    b.cry();
  }
}


白户型:婴儿出生时就有名字;




20170210205610069.png


那么,这样产生的结果是:


20170210205708226.png


诞生的两个孩子,都叫石头。。。双胞胎也不能叫一个名字啊!

...

于是,构造函数出现了

因为构造函数在每次实例化时会自动被调用,实例化几次会被调用几次。如果我们将每次变化的对象的属性值传入到构造函数中或许就可以了,试试代码。

代码实现:

class Baby
{
  int id; //身份证
  String  name;  //名字
//构造与类名Baby相同的Baby方法函数
public Baby(int i,String n)
{
  id=i;
  name=n;
  System.out.println();
}
public void cry()
{
    System.out.println(name+"哭的鼻涕都流出来了。。。。。");
  }
}
class Demo6
{
  public static void main(String[] args) 
  { 
    //创建一个baby对象
    Baby b1 =new Baby(1,"石头");   //石头诞生
    System.out.println("编号:"+b1.id+"姓名:"+b1.name);  
    b1.cry();
    Baby b2 =new Baby(2,"小石头");   //小石头诞生
    System.out.println("编号:"+b2.id+"姓名:"+b2.name);  
    b2.cry();
  }
}

效果图:诞生了两个小baby,小baby出生时就有了自己的名字,名字也不一样!


20170210205843162.png


以上是我对构造函数初始化对应的对象的理解,希望能对大家带来帮助!

创建对象时,jvm就会调用到对应的构造方法,构造方法到底从何而来呢?请参见下一篇构造函数系列博客~

相关文章
|
存储 Kubernetes 持续交付
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
524 0
|
4月前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
71 0
|
4月前
|
边缘计算 安全 物联网
边缘计算在物联网中的作用:技术深度解析
【7月更文挑战第28天】边缘计算在物联网中发挥着至关重要的作用。通过降低延迟、减少网络负载、提高隐私和安全性以及增强离线功能等优势,边缘计算为物联网带来了更加高效、智能和安全的解决方案。未来随着技术的不断进步和应用场景的拓展,边缘计算将在物联网领域发挥更加重要的作用
|
5月前
|
存储 关系型数据库 MySQL
MySQL Change Buffer 深入解析:概念、原理及使用
MySQL Change Buffer 深入解析:概念、原理及使用
MySQL Change Buffer 深入解析:概念、原理及使用
|
5月前
|
消息中间件 Kafka 程序员
Kafka面试必备:深度解析Replica副本的作用与机制
**Kafka的Replica副本是保证数据可靠性的关键机制。每个Partition有Leader和Follower副本,Leader处理读写请求及管理同步,Follower被动同步并准备成为新Leader。从Kafka 2.4开始,Follower在完全同步时也可提供读服务,提升性能。数据一致性通过高水位机制和Leader Epoch机制保证,后者更精确地判断和恢复数据一致性,增强系统容错能力。**
201 1
|
5月前
|
缓存 关系型数据库 MySQL
MySQL Buffer Pool 解析:原理、组成及作用
MySQL Buffer Pool 解析:原理、组成及作用
|
4月前
|
存储 C语言
C语言中static关键字的作用与用法解析
C语言中static关键字的作用与用法解析
|
6月前
|
前端开发 JavaScript Java
Java与CSS:解析在Web开发中的协同作用
Java与CSS:解析在Web开发中的协同作用
104 2
|
5月前
|
存储 关系型数据库 MySQL
MySQL Doublewrite Buffer(双写缓冲区)深入解析:原理及作用
MySQL Doublewrite Buffer(双写缓冲区)深入解析:原理及作用
|
6月前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
114 0

推荐镜像

更多