美文网首页
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对象构造(构造器)

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