为什么该Student类(创建新的Student对象并为其分配唯一ID的类)更适合用作抽象类而不是具体类?每个创建的学生对象都被赋予了自己唯一的ID权限,那么为什么不只在类本身内部拥有不知道是否拥有了Graduate()方法的实现,而不是由继承的类实现呢?
public abstract class Student {
protected int id;
private static int lastID = 0;
protected String firstName;
protected String familyName;
public Student(String firstName, String familyName) {
id = Student.nextID();
this.firstName = firstName;
this.familyName = familyName;
}
private static int nextID() {
return ++lastID;
}
public String toString() {
return firstName + " " + familyName;
}
// Generate string containing graduation information
public abstract String graduate();
}
答案 0 :(得分:1)
关键是:如果您有多个Student子类,则每个子类都有一个独特的 differentiating 属性,请说“主要类”。
因此:该模型仅允许具有不同“主要班级”的学生,因此防止创建缺少相应“属性”的“原始”学生对象将是有意义的。
但是您必须了解:决定要如何精确构建对象模型的原因(哪些类是抽象的,哪些类不是抽象的)
换句话说:写 this 抽象学生类的人认为,完全像这样做是最适合基本要求的。在不同的上下文中,Student可能不是抽象的。
答案 1 :(得分:0)
通常,学生班级是抽象的,因为您将拥有学生的类型。即高中,大学等
有些学生拥有其他人所没有的信息。例如,一个大学生可能有一个宿舍编号,而高中生则没有。抽象类可让您具有更大的灵活性,而不必为学生锁定单个定义。