Java——super
- 其他
- 2025-08-25 16:33:02

在Java中,super关键字用于引用父类的成员(属性、方法或构造器)。它在继承关系中非常重要,主要用于以下几种场景:
1. 调用父类的构造器 在子类的构造器中,可以使用super关键字调用父类的构造器。super()必须放在子类构造器的第一行。如果子类构造器中没有显式调用super(),编译器会自动插入对父类无参构造器的调用。 示例: class Animal { private String name; // 父类构造器 public Animal(String name) { this.name = name; System.out.println("Animal constructor: " + name); } } class Dog extends Animal { private String breed; // 子类构造器 public Dog(String name, String breed) { super(name); // 调用父类构造器 this.breed = breed; System.out.println("Dog constructor: " + breed); } } public class Main { public static void main(String[] args) { Dog myDog = new Dog("Buddy", "Golden Retriever"); } }
输出:
Animal constructor: Buddy Dog constructor: Golden Retriever2. 访问父类的成员变量 如果子类和父类有同名的成员变量,可以使用super关键字访问父类的成员变量。 示例: class Animal { protected String name = "Animal"; } class Dog extends Animal { private String name = "Dog"; public void printNames() { System.out.println("Subclass name: " + name); // 访问子类的name System.out.println("Superclass name: " + super.name); // 访问父类的name } } public class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.printNames(); } }
输出:
Subclass name: Dog Superclass name: Animal3. 调用父类的方法 如果子类重写了父类的方法,可以使用super关键字调用父类的原始方法。 示例: class Animal { public void makeSound() { System.out.println("Animal is making a sound."); } } class Dog extends Animal { @Override public void makeSound() { super.makeSound(); // 调用父类的方法 System.out.println("Dog is barking: Woof! Woof!"); } } public class Main { public static void main(String[] args) { Dog myDog = new Dog(); myDog.makeSound(); } }
输出:
Animal is making a sound. Dog is barking: Woof! Woof!4. super与this的区别 特性superthis作用引用父类的成员(属性、方法、构造器)引用当前对象的成员(属性、方法、构造器)调用构造器用于调用父类的构造器(super())用于调用当前类的其他构造器(this())访问成员变量访问父类的成员变量访问当前类的成员变量访问方法调用父类的方法(即使子类重写了该方法)调用当前类的方法位置限制必须放在子类构造器的第一行必须放在构造器的第一行
5. 注意事项
super必须在第一行:
在构造器中,super()或this()必须作为第一条语句,不能同时出现。如果子类构造器中没有显式调用super(),编译器会自动插入对父类无参构造器的调用。父类必须有无参构造器:
如果父类没有无参构造器,子类必须显式调用父类的有参构造器,否则会编译错误。super不能用于静态上下文:
super关键字不能用于静态方法或静态代码块中,因为静态成员属于类,而不是对象。6. 总结 super关键字用于在子类中访问父类的成员(属性、方法或构造器)。它在继承关系中非常重要,尤其是在方法重写和构造器调用时。合理使用super可以确保子类正确继承和扩展父类的功能。
Java——super由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java——super”