你的各個(gè)子類的唯一差別只在 "返回常量數(shù)據(jù)" 的函數(shù)身上.
修改這些函數(shù),使他們返回超類中的某個(gè)字段,然后銷毀子類;
如果子類沒(méi)有其他的行為函數(shù),就應(yīng)該去掉這個(gè)繼承體系;太簡(jiǎn)單了,沒(méi)必要使用繼承;
public class Person {
// abstract boolean isMale();
// abstract char getCode();
private final boolean isMale;
private final char getCode;
protected Person(boolean male, char code) {
isMale = male;
getCode = code;
}
public boolean isMale() {
return isMale;
}
public char getCode() {
return getCode;
}
static Person createMale() {
return new Person(true, 'M');
}
static Person createFemale() {
return new Person(false, 'F');
}
public static void main(String[] args) {
Person male = Person.createMale();
Person female = Person.createFemale();
char maleCode = male.getCode();
System.out.println(maleCode);
boolean maleMale = male.isMale();
System.out.println(maleMale);
char femaleCode = female.getCode();
System.out.println(femaleCode);
boolean femaleMale = female.isMale();
System.out.println(femaleMale);
}
}
/*class Male extends Person {
Male() {
super(true, 'M');
}
// @Override
// boolean isMale() {
// return true;
// }
// @Override
// char getCode() {
// return 'M';
// }
}*/
/*class Female extends Person {
Female() {
super(false, 'F');
}
// @Override
// boolean isMale() {
// return false;
// }
// @Override
// char getCode() {
// return 'F';
// }
}*/