
您提供的代码清单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继承的扩展性BoxWeight和ColorBox都继承自Box分别添加了weight和color属性展示了如何基于现有类创建更具体的类。二、引用、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隐藏了父类A的i时使用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 A和abstract 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)继承与多态【求个关注】