看了下拉
大致知道你要干什么拉
有几个地方要改
1 public class Donggandidai extends Huadan {
public Donggandidai(){
float ctf=0.6f;
float dxf=0.1f;
float shf=0.25f;
tc="动感地带的资费是";
hf=ctf*ct+dxf*dx+shf*sh;
}
}
还有2个类也这样改,就是都改到构造方法里面去!
2 public class Factory {
public Huadan fangfa4(int i){
Huadan a;
if(i==1)
{
a=new Donggandidai();
}
if(i==2){
a=new Quanqiutong();
}
else{
a=new Shenzhouxing();
}
return a;
}
}
多个判断用swith case,比较好,你这里上面i==1 等于白判断了
switch (i){
case 1:a=new Donggandidai();break;
case 2:a=new Quanqiutong(); break;
case 3:a=new Shenzhouxing(); break;
}
return a
再简单分析下拉
你Factory类的fangfa4方法返回一个Huadan类,你用创建它的子类返回这没有问题的,你在主方法中用一个Huadan来指向这个子类也没有问题,这相当于用一个父类的变量指向一个子类的对象,也就是多态!但是这个时候你是不能再调用子类的独有而父类没有的方法,而且你没有定义子类的构造方法,所以父类的2个成员变量hf和tc没有赋你想赋的值,都只有它们的默认值null和0.0,所以你打印出来的是null0.0,而且你Factory中的fangfa4方法中的判断也不对,如果判断比较多,建议用switch case
比如你创建了一个A类:
class A{
......
}
再创建一个B类 只要继承自A类 就是A类的子类了 用到关键字extends
class B extends A{
......
}
就象楼上说的,就是继承的用法
标签:子类,JAVA,建了