2010-10-28 70 views
2
public abstract ClassName 
{ 

// methods 
// setters & getters...??? 

} 
+9

它会花费你30秒找出。它可以编译或不编译。 – Oded 2010-10-28 08:12:26

+1

感谢Oded以及我是一个初学者,你必须放松一下;) – 2010-10-28 08:16:36

+1

@W M-只是懒得问这样的事情而不是尝试。你有一个编译器 - 如果你想知道这样的事情是否可能,试试吧。如果编译器无效,则会报告。如果对你来说会更快,你会在这个过程中学到一些东西。 – Oded 2010-10-28 08:19:13

回答

10

简短的回答:是:

public abstract class ClassName { 
    private String field; 

    public String getString() { 
     return field; 
    } 

    public void setString(String field) { 
     this.field = field; 
    } 
} 

更多扩展的答案(我不知道它的实际供你现在):

应该认识到,这些方法(如果他们没有用final修饰符声明)可以在子类中被覆盖。这就是为什么认真考虑方法合同并仔细记录它们的原因。如果抽象类的其中一个方法调用另一个方法,那么这个事实也应该记录下来。

抽象类的所有受保护和公共方法(以及常量,在极少数情况下都是受保护的字段)将成为API的一部分。因此,其他开发人员可以使用它们,并且改变它们并不容易。

的最佳做法:

1)三思而后使你Serializable课前 - 这将使所有子类searializable也和(如果你想生产没有可能存在问题的程序),你应该关心的任何可能的序列化子类。

2)实施Cloneable的实际情况也是如此(最好不要在顶级抽象类中实现它)。

3)您应提供正确equalshashCode实施考虑到2子类可以​​用从抽象类的实现进行比较。

4)考虑提供自然顺序(即实现Comparable接口)。如果存在真正的自然顺序,通常是一个好主意。

+0

只是好奇,应该这样做?我的意思是,任何Java最佳实践? – zengr 2010-10-28 08:14:02

+0

当然,为什么不呢?字段属于ClassName。事实上,因为它是私人的,所以它是获取/设置者唯一可能的地方。 – EboMike 2010-10-28 08:15:13

+0

为什么不呢?告诉我任何不该做的理由? – foret 2010-10-28 08:16:48

-3

伙计们当然实现一个抽象类型修饰符getter()会导致编译错误!

+1

我想知道您只注册了这个答案吗? – 2015-12-28 14:04:44

相关问题