public abstract ClassName
{
// methods
// setters & getters...???
}
答案 0 :(得分:11)
答案简短:是的:
public abstract class ClassName {
private String field;
public String getString() {
return field;
}
public void setString(String field) {
this.field = field;
}
}
更广泛的答案(我不确定它现在对你来说是实际的):
您应该意识到这些方法(如果它们未使用final
修饰符声明)可以在子类中重写。这就是为什么考虑方法合同并仔细记录它们的重要性。如果抽象类的一个方法调用另一个方法,那么这个事实也应该记录下来。
您的抽象类的所有受保护和公共方法(以及常量,并且在极少数情况下 - 受保护的字段)都将成为API的一部分。因此,其他开发人员可以使用它们,并且更改它们并不是很容易。
关于最佳做法:
1)在创建类Serializable
之前请三思而后行 - 这将使所有子类都可以被替换(并且如果您想要生成可能不会被破坏的程序),您应该关心任何子类的可能序列化。
2)实现Cloneable
实际上是相同的(不要在顶级抽象类中更好地实现它)。
3)您应该提供正确的equals
和hashCode
实现,同时考虑到2个子类可以与抽象类中的您的实现进行比较。
4)考虑提供自然排序(即实现Comparable
接口)。如果存在真正的自然顺序,通常是个好主意。
答案 1 :(得分:-3)
伙计当然,实现抽象类型修饰符getter()会导致编译错误!