恒生回来的新问题→SQL
1.构造方法 模模糊糊记住然后蒙对了
2.C语言指针的题目蒙的
3.编程题两道都很简单
4.栈数据结构应用的几种场景 (逆序/程序装载/递归/链表的删除?) 选了13 还没找到答案
5.class A {} class B extends A{} 问B()的问题 回来写了下代码发现做错了
5和1竟然是同一个方法,构造方法与继承的问题
public class NO_Hengsheng_1 { NO_Hengsheng_1(){ System.out.println("1"); } } public class NO_Hengsheng_2 extends NO_Hengsheng_1 { NO_Hengsheng_2(){ System.out.println("2"); } } public class NO_Hengsheng_3 extends NO_Hengsheng_2 { NO_Hengsheng_3(){ System.out.println("3"); } } public class NO_Hengsheng { public static void main(String[] args) { new NO_Hengsheng_3(); } }
继承问题,子类实例化生成对象时,把这个类加载到JVM上,会先生成类的实例,但是new关键字有一个特殊的性质就是会先调用类的无参构造方法,如果这个类继承了父类,则子类实例化时,会先调用父类的无参构造方法,因此在这儿B b = new B()的过程中,会先调用A类的无参构造方法
首先,方法是没有继承一说的,只有覆写或者重载,类和类之间才能叫继承。
其次,你所出现的效果,是类的一个初始化的顺序问题,子类在初始化的时候会先调用父类的构造方法,所以打出了你的那句话。
最后,子类可以使用super()显示调用父构造器,没有重写的必要。