Java基础—面向对象之构造方法

一、构造方法的介绍

  开发过程中经常需要在创建对象的同时明确对象的属性,比如员工刚入职公司就要明确他的姓名、年龄等属性信息。

  那么在创建对象就要明确属性值,如何实现呢?也就是在创建对象的时候就要做的事情,当使用new关键字创建对象时,怎么给对象属性初始化值呢?这里就要用到Java的构造方法。

  那么什么是构造方法?从字面理解即为构建创造时用的方法,既对象创建时要执行的方法。既然是对象创建时候要执行的方法,那么只要在new对象时,知道其执行的构造方法是什么,就可以在执行这个方法的时候给对象进行属性赋值。

  构造方法定义语法的格式:

    修饰符  构造方法名(参数列表){}

  构造方法的特点:

    1、构造方法无返回值类型,如:void等。也不需要写返回值,因为它是为构建对象的,对象创建完,方法就执行结束。

    2、构造方法名称必须和本类的名称保持一致。

  构造方法的代码体现:

 1 public class Person {
 2     private String name;
 3     private int age;
 4
 5     /*
 6      *     定义出Person类无参的构造方法
 7      */
 8     public Person() {
 9
10     }
11
12     /*
13      *     定义出Person类含有参数的构造方法
14      */
15     public Person(String name,int age) {
16         //System.out.println("我是一个空参数的构造方法");
17         this.name = name;
18         this.age = age;
19     }

二、构造方法的调用和图解说明

  首先看构造方法是如何执行的呢?在创建对象的时候是如何初始化的呢?

  构造方法是专门用来创建对象,也就是在new对象的时要调用构造方法,如下面的代码体现:

 1 public class Person {
 2     // Person的成员属性age和name
 3     private int age;
 4     private String name;
 5
 6     // Person的构造方法,拥有参数列表
 7     Person(int a, String nm) {
 8         // 接受到创建对象时传递进来的值,将值赋给成员属性
 9         this.age = a;
10         this.name = nm;
11     }
12
13     public void speak() {
14         System.out.println("name=" + name + ",age=" + age);
15     }
16 }
17 /*
18  *     测试类PersonDemo
19  * */
20 class PersonDemo {
21     public static void main(String[] args) {
22         // 创建Person对象,并明确对象的年龄和姓名
23         Person p = new Person(23, "张三");
24         p.speak();
25 }

  上述代码对创建对象时,对构造方法的调用。既在创建对象时,会调用与参数列表对应的构造方法。

  上述代码的构造方法原理图:

  上述原理图说明:

    1、首先会将mian主程序入口方法压栈,执行mian方法中的new(23,"张三");

    2、在堆内存中划分一块区域,用来存放创建Person对象,这片区域内会有属于自己的内存地址0x001,然后给成员变量默认初始值(name=null,age=0)

    3、此时,拥有两个参数的构造方法(Person(String nm , int a))压栈,在这个构造方法中第一行有个隐式的this(),因为构造方法是给对象初始化的,那个对象调用到这个构造方法,this就指向堆中的那个对象。

    4、由于Person(String nm , int a)构造方法中使用了this(nm);构造方法Person(String nm)就会压栈,并将“张三”传递给nm。在Person(String nm , int a)构造方法中同样也有隐式的this,this的值同样也为0x001,这时会执行其中name = nm,即把“张三”赋值给成员的name。当赋值结束后Person(String nm , int a)构造方法弹栈。

    5、程序继续执行构造方法(Person(String nm , int a)中的age = a;这时会将23赋值给成员属性age。赋值结束构造方法(Person(String nm , int a)弹栈。

    6、当构造方法(Person(String nm , int a)弹栈结束后,Person对象在内存中创建才算真正完成,并将0x001赋值给main方法中的引用类型p引用变量。

  

时间: 2024-10-11 05:03:16

Java基础—面向对象之构造方法的相关文章

Java 基础 面向对象之构造方法和关键字

构造方法 构造方法简介 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名.年龄等属性信息. 那么,创建对象就要明确属性值,那怎么解决呢?也就是在创建对象的时候就要做的事情,当使用new关键字创建对象时,怎么给对象的属性初始化值呢?这就要学习Java另外一门小技术,构造方法. 那什么是构造方法呢?从字面上理解即为构建创造时用的方法,即就是对象创建时要执行的方法.既然是对象创建时要执行的方法,那么只要在new对象时,知道其执行的构造方法是什么,就可以在执行这个方法的

java基础面向对象之封装

java基础面向对象之封装 2017-01-15 封装 1)封装性就是保证类内部被外部类不可见 2)所有属性都必须使用private关键字声明 3)封转后的属性如果要被外部所访问就必须实现set和get方法 例如: 使用了private声明的属性只有在自己的类是可见的 1 class Book{ 2 private String title ; //使用private声明的属性 3 private int price ; 4 } 5 public class PrivateDemo1 { 6 p

java基础面向对象之this关键字

java基础面向对象之this关键字 2017-02-14 this的核心概念: this关键字在java中表示当前对象. this关键字的主要用法: 在java中利用this关键字可以实现类属性的调用,类方法的调用,当前对象. 一.调用属性 1 class Book{ //Book类 2 private String title ; //title属性 3 private int price ; //price属性 4 5 public Book(String t , int p){ 6 ti

Java基础---面向对象(2)

Java基础-面向对象(封装概述) 1.面向对象封装的基本概述和使用 (1).什么是封装的思想 定义一个基本的student类: 成员变量:name,age 成员方法:show()方法 测试类: StudentDemo 创建student对象,并使用里面的方法 我们在定义这一个案例的过程中,我们发现一个问题: 通过对象去给成员变量赋值,可以赋值一些非法的数据,如年龄我们定义的是int类型,也就是说我们赋值200也是合理的,但是在实际当中,这一个是不合理的,我们应该需要做一个限制,应该是 这样子,

Java基础——面向对象练习题

1.建立一个图形接口,声明一个面积函数.计算圆形和矩形的面积.注:体现面向对象的特征,对象值进行判断,用异常处理.不合法的数值需要出现"这个数值是非法的提示",不再进行运算. 2.在一个类中编写一个方法,这个方法搜索一个字符数组是否存在某个字符.如果存在则返回这个字符在数组中第一次出现的位置,否则返回-1.需要搜索的字符数组和字符都一参数的形式传递给该方法.如果传入的数组为NULL,则应该抛出IllegalArgumentException异常. 3.补充compare函数代码. 4.

java基础面向对象之类与对象

java基础面向对象之类与对象 2017-01-14 1.面向对象的基本概念 以一种组建化的形式进行代码设计 1)在面向对象程序设计中包含有如下几种特性 ?封装性:保护内部结构的安全性 ?继承性:在已有的程序结构上扩充新的功能 ?多态性:在某一个该娘范围内满足 2)面向对象开发分为以下几个步骤: OOA(面向对象分析) OOD(面向对象设计) OOP(面向对象编程) 2.类与对象 1)了解类与对象的关系 ?认识类与对象 类与对象是整个面向对象之中最基础的组成单元,类是共性的一个集合,而对象是某一

Java基础---面向对象(1)

Java基础--面向对象 1.什么是面向对象 面向对象是基于面向过程的编程思想. (1).面向过程: 面向过程强调的是每一个功能的步骤,强调的是如何实现的步骤. (2).面向对象: 面向对象强调的是对象,然后由对象去掉用功能,强调的是做这一个事情的结果. 2.面向对象的思想特点 (1).是一种更加符合我们思想习惯的逻辑. (2).可以将复杂的事情简单化 (3).将我们从执行者变成了指挥者. 3.面向对象举例 我们一洗衣服为例: 面向过程的实施步骤: 找出脏衣服--->放入盆中---->放入洗衣

Java基础面向对象

Java基础第七天 面向对象思想 类与对象及其使用 对象的内存图 成员变量和局部变量的区别 匿名对象 封装(private) this关键字 构造方法 static关键字 面向对象思想引入 前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装到方法中,需要遍历时,就调用相应的方法即可,提高代码的复用性.在对数组遍历的基础上继续增加需求,比如获取最值,数值逆序等,同样需要将这些功能封装到相应的方法中.这样继续封装会发现方法越来越多,于是就想能不能将这些方法继续进行封装呢?通过前面的

JAVA基础——面向对象三大特性:封装、继承、多态

JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据.     隐藏类的实例细节,方便修改和实现. 3.封装的实现步骤 需要注意:对封装的属性不一定要通过get/set方法,其他方法也可以对封装的属性进行操作.当然最好使用get/set方法,比较标准. A.访问修饰符 从表格可以看出从上到下封装性越来越差. B.this关键字 1.this关键字代表当前