类总共三大成员:属性、方法、构造器(也叫构造方法)
JAVA的构造器更像是python里面init和new的结合
注1:public、private、protected或者bai没有修饰符 ,都可du以对构造方法进行修饰。不同于实例方法的是zhi构造方法不能有任何非访问性质的修饰符修饰,例如static、final、synchronized、abstract等都不能修饰构造方法。
一、
构造器就两个作用:
- 1.创建实例对象
- 2.初始化对象的信息
注: 构造器不会有返回值
二.
//创建类的对象:new + 构造器(Person())
Person p = new Person(); // Person()就是构造器
三.
1.如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器(Person()就是一个空参构造器)
2.定义构造器的格式:权限修饰符 类名(形参列表){}
3.虽然构造器不同于方法,但是也有重载的概念,一个类中可以定义多个构造器,彼此要构成重载
4.一旦我们显式的定义了类的构造器之后,系统就不再提供默认的 空参构造器
注:如果要显式的定义类的构造器,一般我们都会显示定义一个空参构造器5.一个类中,至少会有一个构造器。
注1:默认的 空参构造器权限 和 该类的权限是一致的
注2:构造器 和 方法还是有区别的,构造器是没有返回值的,所以也不能指定返回值类型,也没有void
注3:我们自己定义的构造器,权限一般和类的权限一致
四.
class Person{
//属性
String name;
int age;
//构造器
public Person(){
System.out.println("Person()....."); //这些代码不影响Person类生成实例对象
}
public Person(String n){ //构造器没有返回值这一说,所以也不应该有void这种返回值类型
name = n; //这些代码不影响Person类生成实例对象
}
public Person(String n,int a){
name = n; //这些代码不影响Person类生成实例对象
age = a; //name 和 age前面省略了this
}
//方法
public void eat(){
System.out.println("人吃饭");
}
public void study(){
System.out.println("人可以学习");
}
}
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);
}
}
五.
总结:属性赋值的先后顺序
- ① 默认初始化
- ② 显式初始化
- ③ 构造器中初始化
- ④ 通过"对象.方法" 或 "对象.属性"的方式,赋值
- 以上操作的先后顺序:① - ② - ③ - ④