zoukankan      html  css  js  c++  java
  • java--面对对象之构造方法

    一、构造方法介绍

           在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名、年龄等属性信息。那么,创建对象就要明确属性值,那怎么解决呢?也就是在创建对象的时候就要做的事情,当使用new关键字创建对象时,怎么给对象的属性初始化值呢?这就要学习Java另外一门小技术,构造方法。

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

    (1)构造方法的格式:

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

    构造方法的体现:

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

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

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

    (2)构造方法的代码体现:

     1 public class Person {
     2     private String name;
     3     private int age;
     4     //构造方法无参
     5     public Person(){
     6         name="小猪佩奇";
     7         age=18;
     8     }
     9     //构造方法的重载
    10     public Person(String name,int age){
    11         this.name=name;
    12         this.age=age;
    13     }
    14     //get、set方法
    15     public String getName() {
    16         return name;
    17     }
    18     public void setName(String name) {
    19         this.name = name;
    20     }
    21     public int getAge() {
    22         return age;
    23     }
    24     public void setAge(int age) {
    25         this.age = age;
    26     }
    27 }

    二、构造方法调用和内存图 

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

    public class Test {
        //构造方法调用:创建对象new的时候调用,而且一个对象只调用一次
        //构造方法:如果你这个类里面一个构造方法也没有,那么这个类在编译的时候,你的编译器会自动给你添加一个空参构造方法,但是如果你的这个类中有一个或者多个构造方法,那么编译器就不给你添加了
        public static void main(String[] args) {
            Person p=new Person();
            System.out.println("p.getname()");
            System.out.println("p.getname()");
            Person p1=new Person("琪琪国王",8);
        }
    }

    内存图解:

    三、默认构造方法和细节

    在有学习构造方法之前,我们也可以通过new关键字创建对象,并调用相应的方法,同时在描述事物时也没有写构造方法。这是为什么呢?在之前学习的过程中,描述事物时,并没有显示指定构造方法,当在编译Java文件时,编译器会自动给class文件中添加默认的构造方法。如果在描述类时,我们显示指定了构造方法,那么,当在编译Java源文件时,编译器就不会再给class文件中添加默认构造方法。

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

    当在描述事物时,要不要在类中写构造方法呢?这时要根据描述事物的特点来确定,当描述的事物在创建其对象时就要明确属性的值,这时就需要在定义类的时候书写带参数的构造方法。若创建对象时不需要明确具体的数据,这时可以不用书写构造方法(不书写也有默认的构造方法)。

     构造方法的细节:

    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方法吗?

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

  • 相关阅读:
    图像处理之基础---特征向量的 几何意义
    图像处理之基础---仿射变换
    图像处理之基础---周末戏说卷积
    图像处理之基础---内积和外积
    图像处理之基础---最小二乘积
    图像处理之基础---大话小波和卷积
    嵌入式开发之项目---遥控小车课题设计
    ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 04. 中间件
    ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 03. 服务注册和管道
    ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 02. Web Host 的默认配置
  • 原文地址:https://www.cnblogs.com/-dashu/p/9365124.html
Copyright © 2011-2022 走看看