Java程序员_编程开发学习笔记_网站安全运维教程_渗透技术教程

Java 继承与多态实战解析:父类与子类的成员变量与方法重写

阿贵
1天前发布 /正在检测是否收录...
温馨提示:
本文最后更新于2025年08月29日,已超过1天没有更新,若内容或图片失效,请留言反馈。

Java 继承与多态实战解析:父类与子类的成员变量与方法重写

53.png

一、原题完整代码呈现

以下是计算机二级Java考试中关于类的继承、构造方法和方法重写的典型题型,主要考察父类与子类的变量初始化、方法重写及super关键字的使用,包含4处需要填写的空白(标记为//*********Found********):

public class Java_2{

    public static void main(String args[]) {
        SubClass subC = new SubClass();
        subC.doSomething();
    }
}
class SuperClass {

    int x;

    SuperClass() {
        //*********Found********
        x = ___________;
        System.out.println("in SuperClass : x=" + x);
    }

    void doSomething() {
        //*********Found********
        System.out.println("__________________________()");
    }
}

class SubClass extends SuperClass {

    int x;

    SubClass() {
        super();
        //*********Found********
        x = ____________;
        System.out.println("in SubClass  :x=" + x);
    }

    void doSomething() {
        super.doSomething();
        //*********Found********
        System.out.println("________________________()");
        System.out.println("super.x=" + super.x + "  sub.x=" + x);
    }
}

二、空白处逐一解析与解答

1. 第一处空白:父类变量初始化

答案:10(或其他合理初始值,结合子类形成对比)

//*********Found********
x = 10;

解析
父类SuperClass的构造方法需要初始化成员变量x。从程序输出逻辑看,需要与子类SubClassx值形成区分(后续通过super.xx分别访问),通常选择10作为初始值,与子类的20形成对比。

2. 第二处空白:父类方法输出

答案:SuperClass doSomething

//*********Found********
System.out.println("SuperClass doSomething()");

解析
父类doSomething()方法需要输出标识自身的字符串,以便与子类重写的方法区分。根据命名规范,应包含类名和方法名,清晰展示当前调用的是父类方法。

3. 第三处空白:子类变量初始化

答案:20(或其他与父类不同的合理值)

//*********Found********
x = 20;

解析
子类SubClass的构造方法在调用父类构造方法(super())后,需要初始化自身的成员变量x。为了体现父类与子类变量的区别(同名隐藏),应选择与父类不同的值(如20)。

4. 第四处空白:子类方法输出

答案:SubClass doSomething

//*********Found********
System.out.println("SubClass doSomething()");

解析
子类重写的doSomething()方法需要输出标识自身的字符串,且通过super.doSomething()已调用父类方法,此处应明确显示是子类的方法实现,遵循"类名+方法名"的命名规范。

三、完整正确代码

四、程序功能与运行说明

程序功能

该程序通过类的继承关系展示了:

  1. 父类与子类的构造方法执行顺序(先父后子)
  2. 同名成员变量的隐藏(父类x与子类x相互独立)
  3. 方法重写(子类重写父类doSomething()方法)
  4. super关键字的用法(调用父类构造方法和父类方法)
运行说明
  1. 程序执行流程:

    • 创建SubClass对象时,先调用父类SuperClass的构造方法
    • 父类初始化x=10,输出in SuperClass : x=10
    • 子类构造方法继续执行,初始化自身x=20,输出in SubClass :x=20
    • 调用subC.doSomething(),先执行super.doSomething()(父类方法),再执行子类重写的逻辑
  2. 输出结果:

    in SuperClass : x=10
    in SubClass  :x=20
    SuperClass doSomething()
    SubClass doSomething()
    super.x=10  sub.x=20

五、核心知识点总结

  1. 继承的基本特性

    • 类继承:SubClass extends SuperClass表示子类继承父类,获得父类的成员和方法
    • 构造方法执行顺序:创建子类对象时,先调用父类构造方法(super()),再执行子类构造方法
    • 变量隐藏:子类中定义与父类同名的变量(x)时,子类变量会隐藏父类变量,需通过super.x访问父类变量
  2. super关键字的用法

    • 调用父类构造方法:super()必须是子类构造方法的第一条语句
    • 访问父类成员:super.x访问父类的x变量(区别于子类的x
    • 调用父类方法:super.doSomething()在子类中调用父类被重写的方法
  3. 方法重写(Override)

    • 定义:子类中定义与父类同名、同参数列表、同返回值类型的方法
    • 特性:调用时优先执行子类重写的方法(多态的体现)
    • 注意:父类方法不能是private(私有方法无法被重写)
  4. 成员变量与方法的区别

    • 变量:同名变量不会被重写,只会被隐藏(需显式用super访问父类变量)
    • 方法:同名方法会被重写,通过super可强制调用父类方法

六、常见错误与应试技巧

  1. 常见错误分析

    • 第一处空白初始化错误:父类与子类x值相同,无法体现变量隐藏的效果
    • 第二处空白输出错误:字符串与方法名不匹配,无法区分父类与子类方法
    • 第三处空白构造方法错误:忘记调用super()(编译器会默认添加,但显式写出更规范)
    • 第四处空白重写错误:子类方法参数列表与父类不一致,导致不是重写而是重载
  2. 应试技巧

    • 继承口诀:"子类extends父类,构造先父后子类,同名变量要隐藏,super关键字来区分"
    • 方法重写判断:"两同(名、参数)两小(返回值、异常)一大(访问权限)"
    • 输出调试:通过打印类名区分父类与子类的方法调用,通过super.xx区分变量

通过本题,我们掌握了类继承的基本用法、构造方法的执行顺序、变量隐藏与方法重写的区别,以及super关键字的灵活应用。继承与多态是面向对象编程的核心特性,理解这些概念对编写可扩展、可维护的Java程序具有重要意义。

喜欢就支持一下吧
点赞 1 分享 收藏
评论 抢沙发
OωO
取消 登录评论