我有一个有5种方法的课。其中3个方法必须由同一个包中的其他类打开,2个必须由其他类中的其他类打开。
例如:
void setTimeArray(int[] zeitArray) {
this.timeArray = timeArray ;
}
public int[] getTimeArray() {
return timeArray ;
}
现在我想知道我应该做些什么:
protected
还是另外2种public
?那么什么对我的应用程序的性能更清洁和更好?为什么?
答案 0 :(得分:2)
如果有两个方法共有一个“主题”而另一个方法没有,请考虑将该类分为两个不同的类。如果您这样做,请考虑将使用2种方法的类移动到将使用它的包中(如果它对该包的“主题”有意义的话)。
在任何情况下,使用最低的可见度,以便您可以执行您想要的操作。
此外,更喜欢默认可见性到受保护(区别在于受保护就像默认,但也允许不同包中的子类访问这些方法)。
答案 1 :(得分:2)
您似乎对使用public
,protected
等感到困惑。您班级中的公共方法构成了您班级的公共接口。在设计课程时,您需要决定要向班级的消费者公开哪些功能。
您应该只为IMO创建保护多态的方法。如果你正在使一个方法受到保护,以便包中的另一个类可以获得内部等,那么它可能是一个糟糕的类设计。你应该不使方法受到保护只是因为没有其他类正在使用它现在。如果您将来需要在其他课程中使用它,则必须更改课程。
如果没有多个具体类实现该接口,则不需要创建接口。
如果获得OOP范例,类的公共接口应该非常自然地流动。决策应该涉及更多关于如何公开函数而不是要公开的。
答案 2 :(得分:2)
由于您的班级的3种方法可以通过相同包的类访问,因此无需使用受保护的访问修饰符,而是可以使用默认。当您希望子类访问方法时,应使用 protected 。
如果您认为自己有一个类似的类,并且在其中实现了这两个方法,那么以及 public 方法可以用于接口。这样通过界面就可以将它们联系起来。
答案 3 :(得分:1)
您应该在考虑之后立即编写界面,您可能会使用或需要它;)
除了接口:保持非接口方法protected
是解决问题的有效方法。
不关心表现。针对接口进行编程或使用公共,受保护或私有等访问修饰符不会对性能产生影响。