一、使用new关键字创建对象的时候,会先调用父类的构造器。
class Person(){public Person(){System.out.println("Person...");}
}class Man extends Person{public Man(){System.out.println("Man...");}
}public class OlderMan extends Man{public OlderMan(){System.out.println("OlderMan...");}public static void main(String[] args){OlderMan o = new OlderMan();}
}输出结果:
Person...
Man....
OlderMan...
二、该使用继承还是组合?:
如果需要向上转型,那就用继承!
三、final关键字
1、final修饰成员变量
修饰基本类型,使数值恒定不变。
修饰引用类型,使引用恒定不变。
一个被static 和 final 同时修饰的成员变量只占据一段不能改变的空间。
2、final修饰方法
该方法无法被子类修改
private隐式地被指定为final
3、final修饰类
该类不可被继承
四、初始化及类的加载
什么时候类会加载?(Page 180的例程,对于理解类的加载过程很有帮助,应该回过头多看几遍)
答:创建类的第一个对象时;访问类的static成员变量或static方法时。
public class Children{private static Parent p = new Parent();private String str;public Children(String str) {this.str = str;}static{System.out.println("first init...");}public static void init(){System.out.println("init method....");}public static void main(String[] args) {System.out.println("begin...");/*Children c = new Children("abc");Children c1 = new Children("fds");Children.p.getStr();*/
// Children.init();}
}
定义为static的成员只会被初始化一次。