Java中super()是否仅能在子类构造方法内部调用?
核心问题解答
1. super() 能否在子类构造方法外部调用?
不能。Java语法明确规定:用于调用父类构造方法的super()语句,仅允许出现在子类构造方法的第一行,其他任何位置(包括子类普通成员方法、类外部代码)都不允许使用该写法。
2. super能否被当作派生类的成员方法处理?
不能。super是Java内置的关键字,不属于任何类的成员方法,不存在“通过实例对象调用super”的语法规则。
3. 你给出的示例代码能否正常运行?
完全无法通过编译。main方法中pupper.super()属于非法语法,编译器会直接抛出错误。
补充说明:要注意区分两种super的用法:
- 带括号的
super(参数)是父类构造方法调用,仅能在子类构造方法首行使用 - 不带括号的
super.成员名用于访问父类的成员变量/普通成员方法,这种用法允许在子类的任意非静态成员方法中使用,比如下面的写法是合法的:
class Puppy extends Animal { public void callParentMethod() { // 调用父类的toString方法,合法 System.out.println(super.toString()); } }
内容的提问来源于stack exchange,提问作者Suhail Ahmed
相关产品推荐
相关产品推荐

