public class SuperA { public SuperA(){ printX(); } public void printX(){ System.out.println("hello superA!"); } }
public class SuperB extends SuperA { public SuperB(){ printX(); } public void printY(){ System.out.println("hello superB!"); } @Override public void printX(){ System.out.println("hello override BB!"); } }
public class SuperTest { public static void main(String[] args) { SuperB b = new SuperB(); } }
输出:为
hello override BB!
hello override BB!
原因是
new SuperB()
时,根据虚拟机的加载机制,会优先初始化其父类superA,执行superA的构造方法,但是,superB类中将pintfX方法重写,所以在superA中执行printX方法时,其方法已经被superB覆盖,所以输出hello override BB!
new superA()时,会输出hello superA! 与superB 没有关系。
相关推荐
在 Java 中,多态只看父类引用的方法,而不看子类对象的方法。这意味着,如果父类有一个方法 `void eat() { ... }`,子类可以定义一个同名的方法 `void eat() { ... }`,但这只是子类的方法,而不是重写父类的方法。...
1. **方法覆盖**:当子类继承父类并重写父类中的方法时,通过父类引用调用该方法,将执行子类中的版本。这是多态性的一种体现。 2. **构造器与初始化**:子类对象在创建时会先调用父类的构造器,确保父类的状态得到...
java训练题目 编写程序实现子类对父类构造方法的引用?
在 Java 中,使用 `extends` 关键字可以实现继承关系,子类可以继承父类的属性和方法,并可以重写父类的方法。使用 `super` 关键字可以引用父类的成分,访问父类中定义的属性和方法。 在 Java 中,可以使用多态性来...
即使父类引用没有直接指向子类的特有方法,但这些方法仍然存在于子类的元数据中,因此,如果通过子类引用调用,仍然可以访问到这些非继承成员。 这种机制在设计上保证了多态性的灵活性,同时又不会牺牲子类的特有...
Java编程关于子类重写父类方法问题的理解 Java编程中,子类重写父类方法是非常重要...子类重写父类方法是Java编程中非常重要的概念之一,我们需要了解子类重写父类方法的规则和机制,以便更好地理解和应用Java编程。
在子类中,我们可以使用`super`关键字来引用父类中定义的成员变量和方法。 在给定的Java代码范例中,我们有一个基类`Student`,它代表学生的个人信息以及一个学期的课程注册信息。在`Student`类中有五个字段,包括...
在Java中,子类可以通过以下方式重写父类的属性和方法: - **数据成员的重写**:当子类定义了一个与父类同名的数据成员时,子类成员将隐藏父类成员,即在子类中默认情况下无法直接访问父类成员。 - **方法的重写**...
本文将深入探讨Java中的多态性,特别是“父类引用子类对象”的概念,以及这一特性如何在实际编码中体现。 ### 多态性概述 多态性主要通过方法的重写(Overriding)、重载(Overloading)和动态绑定(Dynamic Binding)来...
在Java编程语言中,"父类引用指向子类对象"是一种常见的多态性表现,它体现了面向对象设计的核心原则之一。这种现象发生时,父类类型的引用被用来创建和操作子类的对象,允许我们利用子类扩展的功能,同时保持代码的...
当调用者使用父类引用调用子类对象的方法时,根据父类的异常声明,调用者可以捕获到所有可能的异常类型,包括子类可能抛出的更具体异常。如果子类能抛出更宽泛的异常,那么调用者可能无法正确处理所有可能出现的异常...
向上转型是自动的,安全的,因为它允许我们用子类对象的地方使用父类引用,这在多态性中十分常见。例如,`Animal a = new Cat();`这里的`a`可以被视为`Cat`对象,尽管它的类型是`Animal`。此时,`a`能调用`Animal`类...
在Java中,子类调用父类的构造函数和函数如下: 1. **构造函数调用**: - **this(参数)**:在子类构造函数内部的第一行,通过`this(param)`调用本类的其他构造函数。 - **super(参数)**:同样在构造函数内部的第...
父类引用指向子类对象时,没法调用子类特有的方法; 父类引用指向子类对象: java中子类强转父类,实际上依然是子类; 该引用只能调用父类中定义的方法和变量; 如果子类中重写了父类中的一个方法,那么在...
在Java编程语言中,继承是面向对象编程的一个核心特性,它允许一个类(子类)继承另一个类(父类)的属性和方法。这个概念在软件工程中扮演着至关重要的角色,因为它促进了代码的重用、扩展和组织。标题"继承的小...
这是因为子类继承了父类的属性和方法,所以在初始化子类对象时,也需要确保父类的状态被正确设置。这是通过使用`super`关键字来实现的,其语法如下: ```java public SubClass() { super(); } ``` 或者,如果父类...
在 Java 中,父类和子类之间的转换操作可以分为两种:父类引用强转成为子类引用和父类不可以强转成为子类。 一、父类引用强转成为子类引用 在 Java 中,父类引用可以强转成为子类引用。这意味着,我们可以将父类...
Java 多态性详解 —— 父类引用子类对象 多态性是 Java 面向对象编程的三个特征之一,另外两个是封装和继承。多态性是指通过方法的重写、重载和动态连接来实现的。在 Java 中,多态性是为了解决单继承问题而引入的...