zoukankan      html  css  js  c++  java
  • java 构造方法

    一 构造方法介绍

      构造方法从字面上理解即为构建创造时用的方法,即就是对象创建时要执行的方法。既然是对

    象创建时要执行的方法,那么只要在new对象时,知道其执行的构造方法是什么,就可以在执行这个

    方法的时候给对象进行属性赋值。

    格式:

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

    {

    }

    构造方法的体现:

      构造方法没有返回值类型。也不需要写返回值。因为它是为构建对象的,对象创建完,方法就执

    行结束。

      构造方法名称必须和类名保持一致。

      构造方法没有具体的返回值。

    构造方法的代码体现:

    class Person {
        // Person的成员属性age和name
        private int age;
        private String name;
    
        // Person的构造方法,拥有参数列表
        Person(int a, String nm) {
            // 接受到创建对象时传递进来的值,将值赋给成员属性
            age = a;
            name = nm;
        }
    }

    二 构造方法的调用和内存图解

    构造方法是专门用来创建对象的,也就是在new对象时要调用构造方法。

    例如:

    class Person {
        // Person的成员属性age和name
        private int age;
        private String name;
    
        // Person的构造方法,拥有参数列表
        Person(int a, String nm) {
            // 接受到创建对象时传递进来的值,将值赋给成员属性
            age = a;
            name = nm;
        }
    
        public void speak() {
            System.out.println("name=" + name + ",age=" + age);
        }
    }
    
    class PersonDemo {
        public static void main(String[] args) {
            // 创建Person对象,并明确对象的年龄和姓名
            Person p2 = new Person(23, "张三");
            p2.speak();
        }
    }

    代码内存图解:

      1、首先会将main方法压入栈中,执行main方法中的 new Person(23,"张三");

      2、在堆内存中分配一片区域,用来存放创建的Person对象,这片内存区域会有属于自己的内存地

    址(0x88)。然后给成员变量进行默认初始化(name=null,age=0)。

      3、执行构造方法中的代码(age = a ; name = nm;),将变量a对应的23赋值给age,将变量nm对应的

    ”张三赋值给name,这段代码执行结束后,成员变量age和name的值已经改变。执行结束之后构造方法弹栈

    ,Person对象创建完成。将Person对象的内存地址0x88赋值给p2。

    三 默认构造方法和细节

      描述事物时,并没有显示指定构造方法,当在编译Java文件时,编译器会自动给class文件中添加默认的

    构造方法。如果在描述类时,我们显示指定了构造方法,那么,当在编译Java源文件时,编译器就不会再给

    class文件中添加默认构造方法。

    class  Person {
        //如果没有显示指定构造方法,编译会在编译时自动添加默认的构造方法
        //public Person(){}  //空参数的默认构造方法
    }

    构造方法的细节:

      1、一个类中可以有多个构造方法,多个构造方法是以重载的形式存在的

      2、构造方法是可以被private修饰的,作用:其他程序无法创建该类的对象。

    class Person {
        private int age;
        private String name;
    
        // 私有无参数的构造方法,即外界不能通过new Person();语句创建本类对象
        private Person() {
        }
    
        // 多个构造方法是以重载的形式存在
        Person(int a) {
            age = a;
        }
    
        Person(String nm, int a) {
            name = nm;
            age = a;
        }
    }

    四 构造方法和一般方法的区别

      构造方法在对象创建时就执行了,而且只执行一次。

      一般方法是在对象创建后,需要使用时才被对象调用,并可以被多次调用。

    有了构造方法之后可以对对象的属性进行初始化,那么还需要对应的set和get方法吗?

      需要相应的set和get方法,因为对象在创建之后需要修改和访问相应的属性值时,在这时只能通过set或者get方法来操作。

  • 相关阅读:
    atitit.TokenService v3 qb1 token服务模块的设计 新特性.docx
    Atitit attilax在自然语言处理领域的成果
    Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理
    Atitit (Sketch Filter)素描滤镜的实现  图像处理  attilax总结
    atitit。企业的价值观 员工第一 vs 客户第一.docx
    Atitit 实现java的linq 以及与stream api的比较
    Atitit dsl exer v3 qb3 新特性
    Atititi tesseract使用总结
    Atitit 修改密码的功能流程设计 attilax总结
    atitit.TokenService v3 qb1  token服务模块的设计 新特性.docx
  • 原文地址:https://www.cnblogs.com/jiejava/p/13262515.html
Copyright © 2011-2022 走看看