构造器与初始化

  1. 构造器
    1. 构造器相关
  2. 初始化

构造器

重载构造器

用this调用另一个构造器

无参数构造器

构造器相关

在一个源文件中,只能有一个共有public类(也可以没有,最多只能有一个),但可以有任意数目的非共有类,且源文件名必须与public类的名字相匹配;而每一个类都可以有main方法(这常用于对类进行单元测试),但是测试类(Employee)永远不会执行,想要测试这个main,只需要执行java Employee即可

构造器与类同名

每个类可以有0、1、多个构造器

构造器没有返回值

构造器总是伴随着new操作一起调用

初始化

实例域初始化

对象初始化块

静态初始化块

import java.util.*;

public class Test
{
    public static void main(String args[])
    {
        Employee[] staff = new Employee[3];

        staff[0] = new Employee("Bob", 40000);
        staff[1] = new Employee(60000);
        staff[2] = new Employee();

        for(Employee e: staff)
        {
            System.out.println("name=" + e.getName() + ", salary=" + e.getSalary() + ", id=" + e.getId());
        }
    }
}

class Employee
{
    private static int nextId;

    private int id;
    private String name = "";    //实例域初始化
    private double salary;

    static    //静态初始化块
    {
        Random gen = new Random();
        nextId = gen.nextInt(10000);
    }

    {    //对象初始化块
        id = nextId;
        nextId++;
    }

    //三个重载构造器
    public Employee(String n, double s)
    {
        name = n;
        salary = s;
    }

    public Employee(double s)
    {
        this("Employee#"+nextId, s);    //调用另一个构造器
    }

    public Employee()
    {
        //name=""、salary=0、id已经对象初始化块中初始化了
    }

    public String getName()
    {
        return name;
    }

    public double getSalary()
    {
        return salary;
    }

    public int getId()
    {
        return id;
    }
}

output:

name=Bob, salary=40000.0, id=4789
name=Employee#4790, salary=60000.0, id=4790

欢迎转载,欢迎错误指正与技术交流,欢迎交友谈心

文章标题:构造器与初始化

文章字数:392

本文作者:Brain Cao

发布时间:2017-06-27, 09:48:34

最后更新:2020-03-15, 16:07:18

原始链接:https://braincao.cn/2017/06/27/java-constructors-initialization/

版权声明:本文为博主原创文章,遵循 BY-NC-SA 4.0 版权协议,转载请保留原文链接与作者。

目录
×

喜欢请收藏,疼爱就打赏