构造器 (constructor,构造方法) 3W what ? why? how? 是什么 , 为什么, 怎么用? 注意事项?
What ? 是什么: 构造器(又叫构造方法)本身是一种特殊的方法,(但是和方法又没有什么大的关系,习惯上叫构造器,以免和方法混淆,)它只在新对象实例化的时候调用。
Why ? 为什么用它: 为什么要用构造器 ,如果要实例化新的对象,需要使用关键字new 来完成,但是除了new这个关键字以外,还有可能在对象实例化时为其进行一些初始化的操作准备,这个时候需要构造方法的支持。 所以用构造器就是想让它实现它的作用
构造器作用就是:1. 创建类的对象
2. 初始化对象的属性
构造器的特征
1.它具与类相同的名称
2.它不声明返回值类型。(与声明为void不同)
3.不能被static、final、synchronized、abstract、native修饰,不能return语句返回值
how ? 怎么用 : 说到怎么用就必须有一定的格式了 ,不能乱用,要有定义格式
构造器声明格式: 权限修饰符 类名 (形参列表 ,,....) { } (注意构造器没有返回值类型)
方法的声明格式 权限修饰符 返回值的数据类型 方法名 (形参列表 ,,....) {
程序语句
[return 常量或者变量]
}
构造器与方法的区别 : 1 声明定义的格式不同 构造器没有返回值类型 ,方法有返回值类型
2 调用时机不同: 构造器: 是在实例化新对象(new)的时候直接调用,且只调用一次,是与对象创建一起执行的操作
普通方法:是在实例化对象产生之后,通过 “对象.方法”调用多次
public TriAngle(){//构造时一定要 构造一个无参数的构造器
}
public TriAngle(double b,double h){
base = b;
height = h;
}
public TriAngle(三个){
三个
}
public Person(String name, int age) {
this(name, age, null);
//this.name=name; this.age=age; this.birthDate=null;
}
2.说明:
①如果在定义一个类时,没有显式的声明类的构造器。那么系统会自动给类提供一个无参的构造器。
②如何声明一个类的构造器。格式:权限修饰符 类名(形参列表){ }
③如果我们在类中一旦定义类的构造器,那么系统就不再提供默认的无参的构造器了。
④类的多个构造器之间,彼此构成重载
⑤总结:类中,一定会有构造器!
3.关于类中属性赋值的先后顺序:
* ①默认初始化 - ②显式初始化 - ③构造器中初始化 - ④通过"对象.属性" 或 "对象.方法"的方法,给属性赋值
定义一个类的时候,可以为属性直接设置默认值,但是这个默认值只有在构造执行完成才会设置,否则不会设置
例: class Book {
private String title = “java开发”;
public Book () {} //title现在的默认值跟此构造器没有关系
}
本程序中,只有整个构造器都完成后,才会真正的将“java 开发” 这个字符串的内容设置给title属性