初学Java, 关于继承的例子
书上的例子,为毛跟书上答案不同。
1.为什么“创建荧光灯”之后,不先出现"构造 Lamp..."?
2.还有下面两句什么意思?
public Filament getFilament(){
return filament;
}
public void setFilament(Filament filament){
this.filament=filament;
}
run:
创建白炽灯
构造 Lamp...
开始构造灯丝...
开始创建白炽灯...
创建荧光灯
开始构造灯丝...
构造 Lamp...
开始创建荧光灯...
创建节能灯
构造 Lamp...
开始创建荧光灯...
开始创建节能灯...
BUILD SUCCESSFUL (total time: 0 seconds)
//------------
public class LampTest{
public LampTest(){
System.out.println("构造 Lamp...");
}
public void light(){
System.out.println("发光...");
}
public static void main(String[] arguments){
System.out.println("创建白炽灯");
IncandecentLamp iLamp=new IncandecentLamp();
System.out.println("创建荧光灯");
LuorescentLamp l1=new LuorescentLamp();
System.out.println("创建节能灯");
EnergySavingLamp el=new EnergySavingLamp();
}
}
class Filament{
public Filament(){
System.out.println("开始构造灯丝...");
}
}
class IncandecentLamp extends LampTest{
private Filament filament=new Filament();
public IncandecentLamp(){
System.out.println("开始创建白炽灯...");
}
public Filament getFilament(){
return filament;
}
public void setFilament(Filament filament){
this.filament=filament;
}
}
class LuorescentLamp extends LampTest{
public LuorescentLamp(){
System.out.println("开始创建荧光灯...");
}
private static Filament filament=new Filament();
public static Filament getFilament(){
return filament;
}
public static void setFilament(Filament filament){
LuorescentLamp.filament=filament;
}
}
class EnergySavingLamp extends LuorescentLamp{
public EnergySavingLamp(){
System.out.println("开始创建节能灯...");
}
}