Java 类继承与构造方法调用实战解析:super与this的应用
一、原题完整代码呈现
以下是计算机二级Java考试中关于类继承、构造方法调用及程序入口的典型题型,主要考察main方法声明、构造方法间的调用,包含2处需要填写的空白(标记为//*********Found**********
):
public class Java_1 extends TT
{
//*********Found**********
public static void __________________(______________ args[])
{
Java_1 t = new Java_1("小龙");
}
public Java_1(String s)
{
super(s);
System.out.println("您好吗?");
}
public Java_1()
{
this("我是文朋");
}
}
class TT
{
public TT()
{
System.out.println("多高兴啊!");
}
public TT(String s)
{
//*********Found**********
_____________________;
System.out.println("我是"+s);
}
}
二、空白处逐一解析与解答
1. 第一处空白:程序入口main方法的声明
答案:main
和 String
//*********Found**********
public static void main(String args[])
解析:
Java程序的入口是main
方法,其固定声明格式为public static void main(String[] args)
。其中:
main
是方法名,是JVM识别的程序入口标识String
是参数类型,args
是字符串数组参数(用于接收命令行参数)
因此第一空填写main
,第二空填写String
。
2. 第二处空白:构造方法中调用本类无参构造方法
答案:this()
//*********Found**********
this();
解析: TT
类有两个构造方法:无参构造方法TT()
和带参构造方法TT(String s)
。在带参构造方法中,this()
用于调用本类的无参构造方法,确保无参构造中的逻辑(打印“多高兴啊!”)被执行。若不调用,无参构造方法不会自动执行,因此填写this()
。
三、完整正确代码
四、程序功能与运行说明
程序功能
该程序通过类继承和构造方法调用,演示了父类与子类构造方法的执行顺序,核心功能包括:
Java_1
类继承TT
类,定义了带参和无参构造方法TT
类定义了无参和带参构造方法,带参构造中调用无参构造- 程序入口创建
Java_1
对象,触发一系列构造方法调用并输出信息
运行说明
- 程序启动时,
main
方法执行Java_1 t = new Java_1("小龙")
,触发Java_1
的带参构造方法 构造方法调用顺序:
Java_1(String s)
中首先调用super(s)
(父类TT
的带参构造方法)TT(String s)
中调用this()
(本类TT
的无参构造方法),打印多高兴啊!
- 回到
TT(String s)
,继续执行打印我是小龙
- 回到
Java_1(String s)
,继续执行打印您好吗?
最终输出结果:
多高兴啊! 我是小龙 您好吗?
五、核心知识点总结
程序入口main方法
- 声明格式:
public static void main(String[] args)
,必须是public static void
修饰,参数为String
数组 - 作用:JVM启动时会寻找并执行该方法,是程序的起点
- 注意:方法名必须为
main
(小写),参数名args
可自定义,但类型必须是String[]
- 声明格式:
构造方法的调用规则
- 子类构造方法中,默认会隐式调用父类的无参构造方法(通过
super()
) - 若显式调用父类构造方法(如
super(s)
),则隐式调用失效 - 本类构造方法中,可通过
this(参数)
调用本类其他构造方法,必须放在构造方法的第一行 - 父类构造方法执行早于子类构造方法(先有父再有子)
- 子类构造方法中,默认会隐式调用父类的无参构造方法(通过
this与super的区别
this()
:调用本类的其他构造方法,只能用于构造方法中,且必须是第一句super()
:调用父类的构造方法,只能用于构造方法中,且必须是第一句- 注意:
this()
和super()
不能同时出现在同一个构造方法中(都要求第一句)
继承中的构造方法执行顺序
- 当创建子类对象时,先执行父类构造方法,再执行子类构造方法
- 若父类构造方法中调用了本类其他构造方法(如
this()
),则按调用顺序执行父类内部构造方法 - 示例流程:子类构造 → 父类带参构造 → 父类无参构造 → 父类带参构造剩余逻辑 → 子类构造剩余逻辑
六、常见错误与应试技巧
常见错误分析
- 第一处空白main方法错误:写成
Main
(首字母大写,JVM无法识别)或main(int[] args)
(参数类型错误),导致程序无法启动 - 第二处空白构造调用错误:写成
super()
(调用父类无参构造,但TT
的父类是Object
,不会执行TT
的无参构造)或遗漏(TT
的无参构造不执行,缺少“多高兴啊!”输出)
- 第一处空白main方法错误:写成
应试技巧
- main方法口诀:"public static void main,String数组做参数,程序入口要记牢"
- 构造调用:"本类构造用this(),父类构造用super(),第一行里来安家"
- 执行顺序:"创建子类对象时,父类构造先执行,再到子类顺下来"
- 调试技巧:在每个构造方法中添加打印语句,观察输出顺序,验证调用逻辑
通过本题,我们掌握了main方法的正确声明、继承中构造方法的调用规则(this与super的使用)及构造方法的执行顺序。理解这些知识点对编写具有继承关系的类至关重要,也是Java面向对象编程的核心基础。