|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
package New;
import java.util.Random;
public class Constructor {
public static void main(String[] args) {
var staff = new Employee[3];
//用三个employee对象填充staff数组
staff[0] = new Employee("whup", 1000);
staff[1] = new Employee("wly", 2000);
staff[2] = new Employee("why", 3000);
//打印所有员工对象的信息
for (Employee e : staff)
System.out.println("name= " + e.getName() + ",id=" + e.getId() + ",salary=" + e.getSalary());
}
}
class Employee {
private static int nextId;
private int id;
private String name = "";
private double salary;
//静态初始化块
static {
var generator = new Random();
nextId = generator.nextInt();
}
//对象初始化块
{
id = nextId;
nextId++;
}
//三个重载构造函数
public Employee(String n, double s) {
name = n;
salary = s;
}
//调用employee (string,double)构造函数
public Employee(double s) {
this("Employee" + nextId, s);
}
//默认构造函数
public Employee() {
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public int getId() {
return id;
}
}
求大佬解答一下,划红线的代码功能是什么。
- {
- id = nextId;
- nextId++;
- }
复制代码
这个是非静态代码块
可以为实例变量(非静态的属性)初始化
每次创建对象的时候,都会执行一次,
- public Employee(String n, double s) {
- name = n;
- salary = s;
- }
复制代码
这个注释也写了是构造函数,不过一般叫构造方法吧,
构造方法就实例化对象用的也就是
- staff[0] = new Employee("whup", 1000);
- staff[1] = new Employee("wly", 2000);
- staff[2] = new Employee("why", 3000);
复制代码
在执行以上代码时,就是调用的构造方法,根据你的参数来决定调用那个构造方法
- this("Employee" + nextId, s);
复制代码
this( )就是访问构造方法,没有参数就访问无参构造
如果有参数就是调用指定的有参构造方法。
也是有参数个数来决定那个构造方法
|
|