当前位置: 首页 > 知识库问答 >
问题:

Java继承和超级关键字[重复]

金飞翼
2023-03-14

我一直在尝试练习一些java MCQ,但没能得到这一个,谁能解释一下输出是怎样的-

Class A
Class B
Class C

而不是

Class A
Class B
class A
{
    String s = "Class A";
}
 
class B extends A
{
    String s = "Class B";
 
    {
        System.out.println(super.s);
    }
}
 
class C extends B
{
    String s = "Class C";
 
    {
        System.out.println(super.s);
    }
}
 
public class MainClass
{
    public static void main(String[] args)
    {
        C c = new C();
 
        System.out.println(c.s);
    }
}

共有1个答案

郎献
2023-03-14

来源:https://docs.oracle.com/javase/tutorial/java/javaoo/initial.html https://docs.oracle.com/javase/tutorial/java/iandi/super.html

超类构造函数总是在实例的实际构造函数之前运行。如果没有对super()的显式调用,编译器会自动插入它。初始化器块被“复制”到实际构造函数内部。

因此c c=new c();将打印:“Class A Class b”,但后面有一行:system.out.println(c.s);打印“Class c”

 类似资料:
  • 问题内容: 但是,我似乎仍然对super关键字感到迷茫: 当我们声明这样的集合时: 不应该相反吗?我们有一个列表,其中包含一些对象(类型未知),它们是的父对象Number。因此Object应该适合(因为它是的父项),而不应该。由于某种原因,情况恰恰相反。 只要我们有以下代码 编译上面的代码是不可能的(我的理智建议这是正确的行为),但是基本逻辑可以证明是相反的: 我知道这很疯狂,但这不是他们不允许使

  • 本文向大家介绍Java继承extends与super关键字详解,包括了Java继承extends与super关键字详解的使用技巧和注意事项,需要的朋友参考一下 函数也称为方法! 继承:在java中使用extends关键字来表示继承关系。super用来继承父类方法和参数。 继承就是子类继承父类的特征和行为,使得子类具有父类相同的行为。 注意事项: 1、当一个类没有继承任何一个类时,系统默认继承Obj

  • 本文向大家介绍Java和多重继承,包括了Java和多重继承的使用技巧和注意事项,需要的朋友参考一下 Java不支持多重继承。这意味着一个类不能扩展一个以上的类。因此,跟随是非法的 但是,一个类可以实现一个或多个接口,这帮助Java摆脱了多重继承的可能性。extend关键字仅使用一次,并且父接口在逗号分隔的列表中声明。例如,如果Hockey接口同时扩展了Sports和Event,它将被声明为- 下面

  • 例如:案例1:我们创建的每个Java类是否都将扩展类,如果是这样,那么为什么我们能够扩展一个类到我们的类可能是愚蠢的问题,刚刚记住了,我发布这个问题

  • 问题内容: 在下面的代码片段中,结果确实令人困惑。 结果是 为什么“ this”在父亲构造函数中指向Son,而“ this.x”却指向父亲在构造函数中的“ x”字段。“ this”关键字如何运作? 我知道 多态的 概念,但是[1]和[2]之间没有区别吗?触发 新的Son() 时,内存中发生了什么? 问题答案: 默认情况下,所有成员函数在Java中都是多态的。这意味着当您调用this.toStrin

  • 本文向大家介绍JavaScript中的超级关键字?,包括了JavaScript中的超级关键字?的使用技巧和注意事项,需要的朋友参考一下 超 该超级 关键字用于访问和调用函数对对象的父。在类和对象文字中的任何方法定义中,super.prop和super [expr]表达式均清晰可见。它在“ extended ”类中使用,该类使用“ extends ”关键字。 语法 示例 在以下示例中,名为“人”的类