美文网首页
Java核心技术(卷I) 6、Java对象构造(构造器)

Java核心技术(卷I) 6、Java对象构造(构造器)

作者: kaiker | 来源:发表于2021-02-18 17:16 被阅读0次

1、重载

就是一个构造器(方法也可以)有多个同名的实现,构造对象的时候,根据参数判断具体使用哪一个。

2、默认字段初始化

如果构造器中没有显式地为字段设置初始值。

  • 数值为0
  • 布尔型为false
  • 对象引用为null

3、无参数构造器

  • 不需要传递参数
  • 如果不自己写一些初始化值,就按照默认字段初始化
public Employee(){
  // 这里不设置就按第二部分的默认值进行初始化
  name = "";
  salary = 0;
  hireDay = LocalDate.now(); // 静态工厂方法构造对象
}

4、显式字段初始化

  • 在类定义中直接为字段赋值
class Employee{
  private String name = "";
}
  • 初始化值还可以用方法填充
class Employee{
  private static int nextId;
  private int id = assignId();
  private static int assignId(){
    int r = nextId;
    nextId++;
    return r;
  }
}

5、this

public Employee(String name, double salary){
  this.name = name;  // this就是隐式参数(隐式参数:https://www.jianshu.com/p/4aa648e19b5a)
  this.salary = salary;
}
  • this还可以调用同一个类的另一个构造器
public Employee(double s){
  // 调用另外一个Employee(String, double)构造器
  this("Employee #" + nextId, s);
  nextId++;
}

6、初始化块

  • 初始化块会在构造器运行之前运行
{
  id = nextId;
  nextId++;
}
  • 静态初始化块可以初始化静态字段
static{
  var generator = new Random();
  nextId = generator.nextInt(10000);
}

相关文章

  • Java核心技术(卷I) 6、Java对象构造(构造器)

    1、重载 就是一个构造器(方法也可以)有多个同名的实现,构造对象的时候,根据参数判断具体使用哪一个。 2、默认字段...

  • 对象与类

    对象与类 Tags: Java核心技术卷I 面向对象程序设计概述 面向对象程序设计简单OOP。 类类是构造对象的模...

  • Java深入学习(一)——构造器创建对象

    1.构造器是创建对象的重要途径 问题:构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象? 答...

  • 双11Java程序员书单推荐

    Java 《Java核心技术卷I》 《Java核心技术卷II》 《Java编程思想》 《Java并发编程实战》 《...

  • OnJava8_初始化和清理

    Java对象初始化通过构造器,清理通过垃圾收集器(Garbage Collector, GC) 构造器 无参构造函...

  • this、static、final

    1.this 对象的创建过程 构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回...

  • Java--对象创建的过程和this的本质

    对象创建的过程和this的本质  构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实...

  • Java中的this

    this关键词 构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回该类的对象,但...

  • 构造器

    所有的Java对象都是在堆中构造的 没有编写构造器,系统会默认提供一个无参数构造器,这个构造器将所有的成员变量设置...

  • java构造方法(构造器)

    java构造方法(构造器) [TOC] 含义 语法 特点 好处

网友评论

      本文标题:Java核心技术(卷I) 6、Java对象构造(构造器)

      本文链接:https://www.haomeiwen.com/subject/baivxltx.html