Java学习进阶知识篇
2026/1/7 22:38:08
构造方法是 Java 中一种特殊的方法,它的核心作用是:在创建对象(使用new关键字)时,初始化该对象的成员变量
构造方法解决给对象初始化的问题
class Person { // 成员变量(未初始化,默认值:name=null,age=0) private String name; private int age; // 构造方法初始化:给成员变量赋具体值 public Person(String name, int age) { // this.name 指向对象的成员变量,name 是构造方法的参数 this.name = name; // 初始化姓名 this.age = age; // 初始化年龄 } public void show() { System.out.println("姓名:" + name + ",年龄:" + age); } public static void main(String[] args) { // 创建对象时,触发构造方法初始化 Person p = new Person("小明", 18); p.show(); // 输出:姓名:小明,年龄:18(说明初始化成功) } }public class Person { //成员变量 private String name; private int age; //成员方法 public void show() { System.out.println(name + "-----" + age); } //无参构造 // public Person() { // } //带参构造 public Person(String name, int age) { this.name = name; this.age = 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; } } ------------------------------------------------------------------------ public class Student extends Person{ //成员变量 private int score; //有参构造 public Student() { //隐藏代码:super(); //自动调用父类中的无参构造方法,如果父类中没有无参构造,只能手动调用父类中的带参构造 super("梅梅",23); } public Student(String name, int age, int score) { super(name, age); this.score = score; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } } ---------------------------------------------------------------------------- public class Text { public static void main(String[] args) { //创建Student对象 //Student stu = new Student("张三", 23, 100); Student stu = new Student(); stu.show(); } } --------------------------------------------------------------------------------- 运行结果:梅梅-----23public class Father { public Father() { System.out.println("Father类 -> 无参构造方法"); } public Father(String name){ System.out.println("Father类 -> String参数构造方法"); } } --------------------------------------------------------------------- public class Son extends Father{ public Son() { //隐藏代码:super(); this("梅梅");//调用:Son(String name) System.out.println("Son类 -> 无参构造方法"); } public Son(String name){ //隐藏代码:super(); //调用父类中的有参构造方法 super(name); System.out.println("Son类 -> String参数构造方法"); } } ------------------------------------------------------------------------ public class Text { public static void main(String[] args) { //创建子类对象 Son son = new Son(); } } ---------------------------------------------------------------------- 运行结果: Father类 -> String参数构造方法 Son类 -> String参数构造方法 Son类 -> 无参构造方法如果一个类没有手动定义任何构造方法,Java 会自动提供一个默认的无参构造方法;如果手动定义了有参构造方法,默认(没有手动定义任何构造方法时的无参构造方法)的就会失效
在继承类中构造方法的第一条语句默认都是:super(),被隐藏,