构造器
构造器的作用:
- 创建对象
- 初始化对象的属性
说明:
- 如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
- 定义构造器的格式: 权限修饰符 类名(行参列表){}
- 一个类中定义的多个构造器,彼此构成重载
- 一旦我们显示的定义了类的构造器之后,系统就不再提供默认的空参构造器
- 一个类中,至少会有一个构造器
构造器的特征:
- 它具有与类相同的名称
- 它不声明返回值类型。(与声明为void不同)
- 不能被 static、final、synchronized、abstract、native修饰,不能有return语句返回值
public class PersonTest {
public static void main(String[] args) {
// 创建构造器对象:new + 构造器
Person p = new Person();
p.eat();
Person p1 = new Person("Tom");
System.out.println(p1.name);
}
}
class Person{
//属性
String name;
int age;
//构造器
public Person() {
System.out.println("Person()........");
}
public Person(String n) {
name = n;
}
public Person(String n, int a) {
name = n;
age = a;
}
public void eat() {
System.out.println("人吃饭");
}
public void study() {
System.out.println("人可以学习");
}
}
运行结果:
属性赋值先后顺序
- 默认初始化
- 显式初始化
- 构造器中赋值
- 通过 "对象.方法" 或 "对象.属性" 的方式赋值
public class UserTest {
public static void main(String[] args) {
User u = new User();
System.out.println(u.age); // 1
User u1 = new User(2);
System.out.println(u1.age); // 2
User u2 = new User(2);
u2.setAge(3);
System.out.println(u2.age); // 3
}
}
class User{
String name;
int age = 1;
public User() {
}
public User(int a) {
age = a;
}
public void setAge(int a) {
age = a;
}
}