构造方法
1.构造方法是类的一种特殊方法,用来初始化类的一个新的对象,在创建对象(new 运算符)之后自动调用,Java中的每个类都有一个默认的构造方法,并且可以有一个以上的构造方法。
2.Java 构造方法有以下特点:
- 方法名必须与类名相同
- 可以有 0 个、1 个或多个参数
- 没有任何返回值,包括 void,不需要提供return
- 默认返回类型就是对象类型本身
- 只能与 new 运算符结合使用
🔔值得注意的是,如果为构造方法定义了返回值类型或使用 void 声明构造方法没有返回值,编译时不会出错,但 Java 会把这个所谓的构造方法当成普通方法来处理。
3.怎么定义
[修饰符列表] 构造方法名(形参列表){
构造方法体
}
有两种构造方法,无参数与有参数如下
//无参数构造方法
public Student(){
}
//有参数的构造方法
public Student(String name,int age){
this.name = name;
this.age = age;
}
//方法重载
public Student(String name){
this.name = name;
}
- 如果没有构造方法,系统会默认提供一个无参数构造方法。如果显示了一个构造方法,系统不在提供默认构造方法。
- 一个类可以定义多个构造方法。(方法重载)
- 建议自己手动加上无参数构造器,以免加有参数构造器时出现覆盖。
完整代码
Student对象创建
package com.powernode.javase.oop04;
public class Student {
//无参数构造方法
public Student(){
}
//有参数的构造方法
public Student(String name,int age){
this.name = name;
this.age = age;
}
//方法重载
public Student(String name){
this.name = name;
}
/*
* --------------------------------------------------------------
* */
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
对象调用
package com.powernode.javase.oop04;
public class StudentTest {
public static void main(String[] args) {
//调用无参数构造方法
Student s = new Student();
s.setName("小白");
s.setAge(10);
System.out.println(s.getName());
System.out.println(s.getAge());
/*
* -------------------------------------------------------------------------
* */
//调用有参数构造方法
Student s2 = new Student("小黑",11);
System.out.println(s2.getName());
//可以修改
s2.setAge(13);
System.out.println(s2.getAge());
Student s3 = new Student("小蓝");
System.out.println(s3.getName());
}
}
🔔解释调用对象new Student():
- new是运算符,Student()构造方法而Student是方法名 .
- 当一个类中如果没有显示任意一个构造方法,系统会默认构造哟个无参数的构造方法.
- 用变量去接受(保存的是内存地址) = new Student(); .
构造代码块
1.语法格式
{
类容
}
2.在每一次new时,都会先执行一次,构造代码块是在构造方法执行前执行的。
3.有什么用:如果所有的构造方法在最开始的时候有相同的代码,不妨将他放在构造代码块里面。
完整代码
创建对象
package com.powernode.javase.oop04;
import javax.jws.soap.SOAPBinding;
public class Student {
//构造代码块
{
System.out.println("构造代码块执行了");
}
/*
* -------------------------------------------------------------------
* */
//无参数构造方法
public Student(){
}
//有参数的构造方法
public Student(String name,int age){
this.name = name;
this.age = age;
}
//方法重载
public Student(String name){
this.name = name;
}
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
调用对象
package com.powernode.javase.oop04;
public class StudentTest02 {
public static void main(String[] args) {
Student student = new Student();
}
}
C:\Users\seven\.jdks\corretto-1.8.0_362\bin\java.exe -javaagent:D:\IDEAIU\lib\idea_rt.jar=50200:D:\IDEAIU\bin -Dfile.encoding=UTF-8 -classpath C:\Users\seven\.jdks\corretto-
构造代码块执行了
Process finished with exit code 0
执行原理
1.两个重要阶段
第一阶段:对象创建
第二阶段;对象初始化
2.对象什么时候创建
new时,在堆内存中开辟空间。然后给所有属性赋值,完成创建
3.对象初始化什么时候完成
构造方法体开始执行,标志着开始经行对象初始化,构造方法执行完毕,对象初始化完毕
快捷键
Alt + insert