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

为什么这个Java代码的输出是原样?[副本]

支阳波
2023-03-14

我想知道为什么下面的代码:

public class Vertebrate {

   public Vertebrate() {
      System.out.print("Vertebrate ");
   }

   public static void main(String[] args) {
      Mammal rabbit = new Mammal();
      System.out.println("Rabbit");
   }
}

class Mammal extends Vertebrate {
   public Mammal() {
      System.out.print("Mammal ");
   }
}

我被要求详细解释,但我不明白为什么输出是这样的。请有人帮帮我。

共有1个答案

洪鹏海
2023-03-14

实例mammal,它在调用vercebrate的默认构造函数之前隐式调用super()。这首先打印vercebrate。然后继续使用mammal的构造函数,该构造函数打印mammal,最后打印rabb

对于继承/构造函数/重写的更复杂/更高级的情况,我不久前编写了一个Q+a。

 类似资料:
  • 问题内容: 范例1: 输出为: 范例2: 输出: 我只是不明白为什么将saySomething设为非静态会导致第二次调用saySomething调用Cow版本而不是Animal版本。我的理解是, 这两种情况都是输出。 问题答案: 静态方法在编译时绑定到其类,并且不能多态使用。在Animal上声明“静态”方法时,该方法永远绑定到Animal类,并且不能被覆盖。静态方法绑定到Class对象,而不是Cl

  • 我试图做一个函数,返回数组的长度,但函数总是返回8

  • 我想重构一些UI代码。 我有一个HTML表单(这里:用一个叫做Wicket的Java GUI编写),在那里我放了一些链接(锚标签)。不是一遍又一遍地重复代码,我想创建一个新的优雅的helper方法。 你已经猜到了,我想要某物。就像 我想避免为此创建一个额外的类。但兰姆达斯就行了。 最好的方法是什么?而这个模式是怎么叫的呢? 多谢了。

  • 问题内容: 我碰到了Java行,并对它的输出感到困惑。您能否解释一下此代码背后的逻辑 输出: 问题答案: 好吧,它等效于: 真正地将原始内容显式转换为只是使其调用而不是。 我相信to 转换 实际上首先 要进行隐式加宽转换-就像这样: 这些帮助有用?

  • 我正在看宣传单。 在setTimeout中调用

  • 错误:无法找到或加载主类MyGridLayout.MyGridLayout C:\users\home\AppData\local\netbeans\cache\8.2\executor-snippets\run.xml:53:Java返回:1构建失败(总时间:0秒)