构造方法
Java的构造方法是一种特殊的方法,用于初始化对象;Java构造方法在对象被创建时被调用。他构造值,即提供对象的数据。
java构造函数 | java方法 |
---|---|
构造器用于初始化对象的状态(数据) | 方法用于暴露对象的行为 |
构造函数不能有返回值 | 方法一般都有返回值 |
构造函数隐式调用 | 方法要显式调用 |
如果没有指定任何构造函数,java编译器提供一个默认构造函数 | 在任何情况下,编译器都不会提供默认的方法调用。 |
构造函数名称,必须和类名称相同。 | 方法名称可以或不可以与类名称相同(随意) |
- 当不提供构造方法的时候,java会提供一个默认的无参构造方法
- 构造方法不能被子类继承,所以final修饰符无意义
- 构造方法也不能被static、synchronized、abstract、native修饰,但可以被public、private、protected修饰
- 没用返回值,包括void
- 一旦声明了有参构造,无参构造必须显式声明。
- 使用new关键字,本质是调用构造器
- 用来初始化对象的初始值
- 单例模式,需要构造器私有
super()、this()
-
super()和this()只能在构造方法的第一行,
-
而且不能同时使用,因为会造成初始化两次。
-
super()和this() 都是要指向对象,所以不能在static里面使用,包括static类、static方法、static语句块
因为static不创建对象
子类、父类中的构造方法
- 子类构造方法中的第一行 默认为super(),默认调用父类的无参构造方法;
默认生成的无参构造方法第一行也是super()
如果父类没有无参构造方法,子类就要显式的调用父类的有参构造方法或者自己的哪个构造方法。
构造方法调用
public class Base{
int w, x, y ,z;
public Base(int a,int b){
x=a; y=b;
}
public Base(int a, int b, int c, int d){
// assignment x=a, y=b
w=d;z=c;
}
}
例子:在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?
Base(a,b); ×
this(a,b); √
-
构造函数不能直接调用
-
在构造方法中调用本类中的构造方法时,使用this调用,或使用 new Base(a,b)