构造器详解
构造器
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。
特点:
- 必须和类的名字相同
- 必须没有返回类型,也不能写void
作用:
- new本质在调用构造方法
- 初始化对象的值
注意点:
- 定义有参构造之后,如果使用无参构造,显示的定义一个无参的构造
Alt + Insert 快捷键
public class Person {
//一个类即使什么都不写,它也会存在一个方法
//显示的定义构造器
String name;
int age;
//1.使用new关键字,本质是在调用构造器
//2.用来初始化值
public Person() {
}
//有参构造:一旦定义了有参构造,无参就必去显示定义
public Person(String name, int age) {
this.name = name;
this.age = age;
}
//alt+insert 快捷生成构造器
}
main方法
//一个项目应该只存在一个main方法
public class Application {
public static void main(String[] args) {
Person person = new Person("changge",18);
System.out.println(person.name);
}
}
构造器与方法的区别
功能和作用的不同
构造器是为了创建类的一个对象,同时可以对属性做初始化。
方法仅仅是功能函数。
修饰符
构造器和方法都可以被 public,protected,default,private修饰。但不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final,static,native,synchronized。
1.构造器不是通过继承得到的,所以没必要把它声明为final(如果是继承得到的,根据重写的多态性,调用本类构造器却实际执行子类构造器,则可以用final限制)。
2.一个抽象的构造器将不会在本类中被实现,所以也不能声明为abstract的。
3.构造器总是关联一个对象而被调用,所以把它声明为static是没有意义的。(但其实构造器默认是static的)
返回类型
方法必须要有返回类型,能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。
命名
构造器名与类名相同,而方法名则无具体规定。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。
调用
构造方法:总是伴随着new操作符的执行被调用,不能对一个已经存在的对象调用构造器来达到重新设置实例域的目的。
一般方法:在对象创建之后才可以调用,并且可以调用多次。
"this"的用法
方法中使用this指向正在执行方法的类的对象。(静态方法不能使用this关键字,因为静态方法不属于类的对象,所以this也就没有什么东西去指向)。
构造器中的this指向同一个类中,不同参数列表的另外一个构造器,且调用代码必须放在第一行,否则编译将出错。