静态域与静态方法
- 静态域:即static关键字,每个类中只有一个这样的域,每个类中的静态域被所有实例所共享,该静态域属于类,不属于任何独立的对象。
- 静态常量:使用final关键字修饰的常量,即不允许再修改,但被所有实例共享。
- 静态方法:一种不能向对象实施操作的方法。没有隐式参数即没有this参数。
静态方法使用场景:
- 不需要访问对象状态,其所需参数都是显示参数提供。
- 一个方法只需要访问类的静态域。
工厂方法:常用静态工厂方法来构造对象。
对象构造:
package baseDemo;
import java.util.Random;
/**
* 重载:方法名相同,参数不同的即为重载。
* 用this(...)调用另一个构造器
* 无参构造器
* 对象初始化块
* 静态初始化块
* 实例域初始化块
*/
public class ConstructorTest {
public static void main(String[] args) {
Employee1[] staff = new Employee1[3];
staff[0] = new Employee1("Harry", 40000);
staff[1] = new Employee1(2000);
staff[2] = new Employee1();
for (Employee1 employee1 : staff) {
System.out.println(employee1);
}
}
}
class Employee1 {
private static int nextId;
private int id;
private String name = "";
private double salary;
//静态初始化块
static {
Random random = new Random();
nextId = random.nextInt(1000);
}
//对象初始化块
{
id = nextId;
nextId++;
}
//实例域初始化块
public Employee1(String n, double s) {
name = n;
salary = s;
}
public Employee1(double s) {
//使用this关键字调用同类中的另一个构造器
this("Employee #" + nextId, s);
}
public Employee1() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee1{" +
"id=" + id +
", name='" + name + '\'' +
", salary=" + salary +
'}';
}
}