在面向对象编程的思想中,构造方法(Constructor)是一个特殊的函数,用于创建和初始化类的对象。构造方法通常与类名同名,在对象创建时自动调用,用于为对象属性赋初值,并进行其他必要的操作。
构造方法在不同编程语言中可能会有所不同,但常见的语言都支持构造方法的定义。
⛄1. 构造方法的格式和执行时机
格式注意 :
- 🍁方法名与类名相同,大小写也要一致
- 🍁没有返回值类型,连void都没有
- 🍁没有具体的返回值(不能由retrun带回结果数据)
执行时机 :
- 🍁创建对象的时候调用,每创建一次对象,就会执行一次构造方法
- 🍁不能手动调用构造方法\
⛄2. 构造方法的作用
用于给对象的数据(属性)进行初始化
public class Student { private String name; private int age; // 1. 如果一个类中没有编写任何构造方法, 系统将会提供一个默认的无参数构造方法 public Student(){} // 2. 如果手动编写了构造方法, 系统就不会再提供默认的无参数构造方法了 public Student(String name, int age){ this.name = name; this.age = age; System.out.println("我是Student类的构造方法"); } public void show(){ System.out.println(name + "..." + age); } }
public class TestStudent { public static void main(String[] args) { Student stu1 = new Student("张三", 23); stu1.show(); Student stu2 = new Student(); } }
⛄3. 构造方法的特点
●🍁 名字与类名相同。
● 🍁没有返回值,但不能用 void 声明构造函数。
● 🍁生成类的对象时自动执行,无需调用。
构造方法不能被 override(重写),但是可以 overload(重载),所以你可以看到一个类中有多个构造函数的情况。
⛄4. 构造方法的注意事项
构造方法的创建 :
🍁如果没有定义构造方法,系统将给出一个默认的无参数构造方法
🍁如果定义了构造方法,系统将不再提供默认的构造方法
推荐的使用方式 :
🍁无论是否使用,都手动书写无参数构造方法,和带参数构造方法
⛄5. 构造方法为什么不能被重写
重写(Override)是父类与子类之间的多态性,实质是对父类的函数进行重新定义,如果在子类中定义某方法与其父类有相同的名称和参数则该方法被重写,不过子类函数的访问修饰权限不能小于父类的;若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法,如需父类中原有的方法则可使用 super 关键字。
重写是子类方法重写父类的方法,重写的方法名不变,而类的构造方法名必须与类名一致,假设父类的构造方法如果能够被子类重写则子类类名必须与父类类名一致才行,所以 Java 的构造方法是不能被重写的。