构造器与初始化
构造器
重载构造器
用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 版权协议,转载请保留原文链接与作者。