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

简介: 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与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就会调用到对应的构造方法,构造方法到底从何而来呢?请参见下一篇构造函数系列博客~

相关文章
|
8月前
|
存储 Kubernetes 持续交付
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用
161 0
|
14天前
|
前端开发 JavaScript Java
Java与CSS:解析在Web开发中的协同作用
Java与CSS:解析在Web开发中的协同作用
|
30天前
|
XML 存储 数据格式
探索 DTD 在 XML 中的作用及解析:深入理解文档类型定义
DTD(文档类型定义)用于定义XML文档的结构和合法元素、属性。它允许不同团体就数据交换标准达成一致,并用于验证XML数据的有效性。DTD可通过内部声明(在XML文档内)或外部声明(在单独文件中)来定义。内部声明示例显示了如何定义`note`元素及其子元素的结构,而外部声明则引用外部DTD文件。元素、属性、实体和PCDATA/CDATA是XML构建模块。DTD中,元素通过ELEMENT声明定义,属性通过ATTLIST声明定义,实体声明提供特殊字符或外部资源的快捷方式。
31 0
|
30天前
|
网络性能优化 网络安全 网络虚拟化
|
30天前
|
存储 算法 编译器
【C/C++ 数据结构 线性表】 数据结构 解析 链表中哨兵节点(伪节点)的作用
【C/C++ 数据结构 线性表】 数据结构 解析 链表中哨兵节点(伪节点)的作用
23 0
|
30天前
|
编译器 C++
【C/C++ 构造函数 详解】深入解析C++ 构造函数:C++ 11 中的新特性与实践
【C/C++ 构造函数 详解】深入解析C++ 构造函数:C++ 11 中的新特性与实践
124 0
|
30天前
|
机器学习/深度学习 自然语言处理 算法
深度解析预训练权重的本质和作用
深度解析预训练权重的本质和作用
112 1
|
30天前
|
存储 Java 开发者
HashMap构造函数解析与应用场景
HashMap构造函数解析与应用场景
|
9月前
|
存储 算法 安全
保障文档安全:解析DES算法在公司文档管理软件中的作用
DES算法是一种对称加密算法,可以用于保护敏感数据的安全性。在公司文档管理软件中,DES算法可以用于加密和解密员工的电脑活动数据,以保护这些数据不被未经授权的人员访问。
285 0
|
12月前
|
XML 存储 JSON
java之路—— SpringMVC的常用注解解析以及作用、应用
java之路—— SpringMVC的常用注解解析以及作用、应用
164 0

推荐镜像

更多