一、使用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的成员只会被初始化一次。