2 qq 34707933 qq_34707933 于 2016.09.12 19:27 提问

新手~~~~java子类和父类的构造函数

class Animal
{
Animal()
{
System.out.println("Making an Animal");
}
}
class Hippo extends Animal
{
Hippo()
{
System.out.println("Making a Hippo");
}
}
class TestHippo
{
public static void main(String[] args)
{
System.out.println("Starting...");
Hippo h=new Hippo();
}
}

为啥输出是
Starting...
Making a Hippo
父类的构造函数中的输出语句没有执行
图片说明
图片说明 cl

3个回答

alanjet
alanjet   2016.09.12 19:48

不会吧,我测试了你的代码,能正常输出啊:图片说明

qq_34707933
qq_34707933 真的没有 我把运行结果更新出来了
接近 2 年之前 回复
yangcheng33
yangcheng33   2016.09.12 19:51

应该是没有重新编译,父类肯定会被打印的,原理是jvm会在子类的构造函数里自动添加super()

yangcheng33
yangcheng33 回复DemonDB0410: 源码确定保存更改了吗,截个图?
接近 2 年之前 回复
qq_34707933
qq_34707933 这是咋回事啊
接近 2 年之前 回复
qq_34707933
qq_34707933 真的执行了 你看上面的运行结果
接近 2 年之前 回复
yangcheng33
yangcheng33 回复DemonDB0410: 我这运行了是有的,你真的已经执行了javac TestHippo.java了?
接近 2 年之前 回复
qq_34707933
qq_34707933 真的没有 我把运行结果更新出来了
接近 2 年之前 回复
u013829202
u013829202   Rxr 2016.09.13 09:52

经过测试完全没有问题。都能输出。你仔细看看你的环境变量是不是有没配好的。。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于父类与子类的构造函数调用顺序
关于父类与子类的构造函数调用顺序
JAVA子父类中构造函数的特点-子类实例化过程
//仅作为学习笔记 /* 子父类中的构造函数 在对子类对象进行初始化时,父类的构造函数也会运行 那是因为子类的构造函数默认的第一行有一句隐式的语句super() super():会访问父类中空参数的构造函数,而且子类中所有的构造函数默认的第一行都是super() 为什么子类一定要访问父类中的构造函数? 因为父类中的数据子类可以直接获取,所以子类对象在建立时=,需要查看父类是如何对
java 子类和父类构造函数关系
java继承中对构造函数是不继承的。 以下是例子:  public class FatherClass {  public FatherClass() {        System.out.println(100);  }  public FatherClass(int age) {       System.out.println(age);  } }
java中子类继承父类时是否继承构造函数呢?
java继承中对构造函数是不继承的。以下是例子: public class FatherClass { public FatherClass() {       System.out.println(100); } public FatherClass(int age) {      System.out.println(age); }} public class SonC
Java 子类调用父类构造函数----super()详解
Java 子类调用父类构造函数----super()详解
java 中关于子类调用父类构造函数问题
1.前提:父类和子类同时都有有参的构造函数和无参构造函数。              java中的子类初始化时初值为空。调用顺序为先调用父类无参构造函数,然后调用子类无参构造函数。              java中的子类初始化时初值不为空。调用顺序为先调用父类无参构造函数,然后调用子类有参构造函数。 2..前提:父类和子类无无参构造函数只有有参构造函数。
Java中子类和父类的构造函数?
这篇文章总结了关于Java构造的常见​​问题。 1)为什么创建一个子类对象要也需要调用父类的构造函数? class Super { String s; public Super(){ System.out.println("Super"); } } public class Sub extends Super { public Sub(){
Java构造函数之调用父类构造函数
子类可以通过super关键字来显式地调用父类的构造函数。 当父类没有提供无参数的构造函数时,子类的构造函数中必须显式的调用父类的构造函数; 如果父类提供了无参数的构造函数,此时子类的构造函数就可以不显式的调用父类的构造函数,默认调用父类的无参构造函数。 package com.bjut.StudyTest; class Person { public Person() { Syste
Java子类构造函数中默认调用父类的空参构造函数
测试代码如下: 父类: public class ParentTest { public ParentTest(){ System.out.println(1); } public ParentTest(String name){ System.out.println(2); } } 子类: public class ChildTest extends Par
Java继承,子类默认在构造函数中用super()调用父类构造函数
1.子类继承父类的方法属性,并重写父类的方法,子类修饰符不能比父类方法的修饰符的范围狭窄。 Protect 与 默认 区别: protected :成员 本类和子类可以访问。【其他类不可以使用(即使同一个包中)】 Frinedly(友好/默认):成员 本类和子类,同包可以访问【其他类可以使用】 继承中的构造方法的执行顺序:父类有构造函数,子类也写构造方法的时候必须显示的调用父类的构造方