package initSeq; /** * Java 中,类的初始化顺序原则: * 1.静态变量>非静态变量,其中静态变量初始化一次,非静态变量可能初始化多次 * 2.父类>子类 * 3.按照成员变量定义顺序初始化 */ public class InitSeq { private String name; private int age; static private String parent = "parent"; public InitSeq(){ } public InitSeq(String name, int age, String parent){ this.name = name; this.age = age; } public String getName() { return name; } public int getAge(){ return age; } } /** * 1.子类所有构造方法的内部,第一行会隐式调用父类的无参构造方法super() * 2.如果子类构造方法显示调用了父类构造方法,则不再自动super() * * 原因:在创建子类对象时初始化顺序 * * 总结: * 若手写父类的有参构造方法,则无参构造方法不再自动生成(被屏蔽),此时创建子类时不能通过编译 * 需要在子类构造方法中显示调用父类有参构造方法 * * 如果不显示调用有参构造方法,则系统会自动隐式调用父类的无参构造方法 * (系统会自动生成一个无参构造函数,当手写了有参数构造方法后,系统不再自动生成无参构造方法) */ class Child extends InitSeq{ private String cname; public int cage; public Child(String name, int age, String child){ //super(); System.out.println("子类构造方法"); } public Child(){ super(); } }
Java学习笔记——构造方法
最新推荐文章于 2024-05-24 13:12:03 发布