继承中的私有成员访问限制
2026/7/29 5:49:23 网站建设 项目流程

您提供的代码清单(Listing 1-20)系统地展示了Java继承与多态的核心概念。以下是这些代码示例所演示的关键知识点总结:

一、继承基础与成员访问

清单核心演示点关键代码/说明
Listing 1继承的基本语法与成员访问class B extends A。子类B继承了父类A的公有成员i,j和方法showij(),并可以访问它们。
Listing 2私有成员(private)的不可继承性父类A中的私有成员j在子类B中无法直接访问(total = i + j;会导致编译错误)。这体现了封装性。
Listing 3 & 4继承的扩展性BoxWeightColorBox都继承自Box,分别添加了weightcolor属性,展示了如何基于现有类创建更具体的类。

二、引用、super关键字与构造方法链

清单核心演示点关键代码/说明
Listing 5引用类型的转换(向上转型)Box plainbox = weightbox;将子类BoxWeight引用赋值给父类Box引用。通过plainbox只能访问Box类中定义的成员(如volume()),无法访问子类特有的weight成员。
Listing 6 & 7super关键字调用父类构造方法super(w, h, d);用于在子类构造方法中调用父类的匹配构造方法,必须位于子类构造方法的第一行。这是初始化继承而来的父类属性的正确方式。
Listing 8使用super传递对象给父类构造方法super(ob);在子类的拷贝构造方法中,将子类对象ob传递给父类的拷贝构造方法(Box(Box ob)),以实现父类部分的深拷贝。
Listing 9super访问被隐藏的父类成员当子类B的成员i隐藏了父类Ai时,使用super.i可以明确访问父类的版本。
Listing 11构造方法的调用链创建C类对象时,输出顺序为:A->B->C。这证明了构造方法的调用顺序是从最顶层的父类开始,逐级向下到子类

三、方法重写(Override)、重载(Overload)与多态

清单核心演示点关键代码/说明
Listing 12方法重写(Override)子类B定义了与父类A完全相同签名(方法名、参数列表)show()方法,从而覆盖了父类的方法。subOb.show()调用的是子类B的版本。
Listing 13使用super调用被重写的父类方法在子类重写的方法中,通过super.show()可以调用父类被覆盖的方法版本。
Listing 14方法重载(Overload)与重写的区别子类B中的show(String msg)与父类A中的show()参数列表不同,这是重载。重载发生在同一个类或父子类之间,不构成覆盖。
Listing 15 & 16动态方法分派(运行时多态)父类引用A r可以指向不同的子类对象(B,C)。r.callme()figref.area()运行时根据r实际指向的对象类型来决定调用哪个版本的方法,这是多态的核心体现。
Listing 17 & 18抽象类与抽象方法abstract class Aabstract double area();。抽象类不能实例化,抽象方法没有方法体,必须在子类中被重写(除非子类也是抽象类)。这使得父类可以定义规范,具体实现由子类完成。

四、final关键字

清单核心演示点关键代码/说明
Listing 19final 方法父类中使用final void meth()声明的方法不能被子类重写。尝试重写会导致编译错误。
Listing 20final 类使用final class A声明的类不能被任何其他类继承。

五、多级继承

清单核心演示点关键代码/说明
Listing 10多级继承(多层继承)Shipment继承自BoxWeightBoxWeight继承自Box。这展示了如何通过继承链构建更复杂的类层次结构。

核心概念对比表

特性方法重写 (Override)方法重载 (Overload)
发生位置父子类之间同一个类或父子类之间
方法签名必须完全相同(方法名、参数列表)必须不同(参数列表的类型、顺序、个数)
返回类型子类方法返回类型可以是父类方法返回类型的子类(协变返回类型)可以不同
访问权限子类方法不能比父类方法更严格(如父类public,子类不能是private可以不同
关键作用实现多态,运行时根据对象类型调用方法提供处理不同类型数据的同名方法,编译时确定调用哪个方法

总结

这些代码清单完整地展示了Java面向对象编程中继承与多态的完整知识链:从基本的类扩展、成员访问控制,到使用super关键字、构造方法链,再到方法重写/重载、运行时多态(动态绑定),以及抽象类和final修饰符的应用。理解这些内容是掌握Java核心面向对象特性的基础。


参考来源

  • java中super(aa bb cc)_河北工业大学java期末考试复习题(部分答案).doc
  • 探索 Java 领域 Eclipse 的代码分析工具
  • Java中的代码分析工具
  • JAVA语言总体讲解与一些代码分析
  • 初识java———javaSE(5)继承与多态【求个关注!】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询