java – 与构造函数和子类混淆
我无法理解使用带子类的构造函数的概念.
这是父类: public class A { public A() { System.out.println("The default constructor of A is invoked"); } } 儿童班: public class B extends A { public B(String s) { System.out.println(s); } } 而我的主要方法是: public class C { public static void main (String[] args) { B b = new B("The constructor of B is invoked"); } } 当我运行C时,我得到的输出是
我不明白的是为什么来自A类的消息正在输出.因为你将一个字符串参数传递给B类的构造函数,它不应该只打印出来吗?换句话说,输出不应该只是:
在此先感谢,我真的很感谢你们给予的任何帮助. 解决方法
从
docs
因此,即使您没有显式调用超类构造函数,编译器也会在类B的构造函数中插入名为super()的语句. 这就是B类构造函数在编译后的样子. public B(String s){ super(); // this is inserted by the compiler,if you hadn't done it yourself. System.out.println(s); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |