构造方法的定义与分类:
Java构造方法:指的是类构造对象时调用的方式,通常用来实例化对象,没有返回值,也可以理解为,返回的是当前对象的引用!每一个类都默认自带一个无参构造方法,其构造方法的名称,应该和定义它的类名称一样,没有返回类型,也没有void。
分类:
(1)有参构造方法
(2)无参构造方法
Java构造方法的作用:
(1)构造出一个类的实例
(2)对构造出来的类的实例或者说是对象进行初始化。
注意事项:
类中一定有构造方法,如果不写出来,系统会自动添加无参构造方法。因为接口不允许实例化,所以接口里无构造方法。不能被static或是final等进行修饰。Java构造方法在对对象进行初始化的时候,自动执行命令,通常不能显式地直接进行调用。
如果同一个类有多个构造方法,那么Java编译系统,会自动根据初始化的时候最后面一个括号的参数个数和参数类型来自动进行一一对应。
具体介绍
//反编译结果
package com.test;
public class Test {
public Test() { //即使你什么都不编写,也自带一个无参构造方法,只是默认是隐藏的
}
}
反编译其实就是把我们编译好的class文件变回Java源代码。
这种方法没有写明返回值,但是每个类都必须具有这个方法!只有调用类的构造方法,才能创建类的对象!
类要在一开始准备的所有东西,都会在构造方法里面执行,完成构造方法的内容后,才能创建出对象!
一般最常用的就是给成员属性赋初始值:
public class Student {
String name;
Student(){
name = "lbw";
}
}
我们可以手动指定有参构造,当遇到名称冲突时,需要用到this关键字
public class Student {
String name;
Student(String name){ //形参和类成员变量冲突了,Java会优先使用形式参数定义的变量!
this.name = name; //通过this指代当前的对象属性,this就代表当前对象
}
}
注意,this只能用于指代当前对象的内容,因此,只有属于对象拥有的部分才可以使用this,也就是说,只能在类的成员方法中使用this,不能在静态方法中使用this关键字。
在定义了新的有参构造之后,默认的无参构造会被覆盖!
如果同时需要有参和无参构造,那么就需要用到方法的重载!手动再去定义一个无参构造。
public class Student {
String name;
Student(){
}
Student(String name){
this.name = name;
}
}
成员变量的初始化始终在构造方法执行之前
public class Student {
String a = "sadasa";
Student(){
System.out.println(a);
}
public static void main(String[] args) {
Student s = new Student();
}
}