酷代码 AI
菜单
服务商

public class Animal { public Animal(){ System.out.println("Animal的无参方式被调用"); } public Animal(String name){ System.out.println("Animal的单参构造方法被调用,name=" + name); } public Animal(String name, int age) { System.out.println("Animal的双参构造方法被调用,name=" + name + ", age=" + age); } } public class Dog extends Animal { private String breed; public Dog(){ this.breed=" "; System.out.println("Dog的无参构造方法被调用" ); } public Dog(String na

public class Animal { // 无参构造方法 public Animal() { System.out.println("Animal的无参构造方法被调用"); } // 单参构造方法 public Animal(String name) { System.out.println("Animal的单参构造方法被调用,name=" + name); } // 双参构造方法 public Animal(String name, int age) { System.out.println("Animal的双参构造方法被调用,name=" + name + ", age=" + age); } } public class Dog extends Animal { private String breed; // 无参构造:默认调用父类无参构造 public Dog() { super(); // 显式调用父类无参构造(可省略,但会隐式调用) this.breed = "未指定"; System.out.println("Dog的无参构造方法被调用,品种设为:" + this.breed); } // 单参构造:传递name给父类单参构造 public Dog(String name) { super(name); // 调用父类单参构造 this.breed = "萨摩耶"; System.out.println("Dog的单参构造方法被调用,设置品种为:" + this.breed); } // 全参构造:传递name和age给父类双参构造,设置breed public Dog(String name, int age, String breedType) { super(name, age); // 调用父类双参构造 this.breed = breedType; System.out.println("Dog的全参构造方法被调用,设置品种为:" + this.breed); } } public class Test03 { public static void main(String[] args) { System.out.println("------------------------"); Dog dog1 = new Dog(); System.out.println("------------------------"); Dog dog2 = new Dog("白白"); System.out.println("------------------------"); Dog dog3 = new Dog("小白", 3, "柯基犬"); } } /* 输出结果: ------------------------ Animal的无参构造方法被调用 Dog的无参构造方法被调用,品种设为:未指定 ------------------------ Animal的单参构造方法被调用,name=白白 Dog的单参构造方法被调用,设置品种为:萨摩耶 ------------------------ Animal的双参构造方法被调用,name=小白, age=3 Dog的全参构造方法被调用,设置品种为:柯基犬 */ 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - 子类构造方法中必须优先调用父类构造方法,super() 必须位于第一行。 - 若父类没有无参构造方法,子类所有构造方法都必须显式使用 super 调用匹配的父类构造。 - 构造方法不能被继承,但创建子类对象时会自动触发父类构造链。 [2025-11-09 15:27:37 | AI写代码神器 | 650点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多