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