什么是更好的:界面或玩公共/受保护?

时间:2011-09-14 06:59:34

标签: java coding-style interface public protected

我有一个有5种方法的课。其中3个方法必须由同一个包中的其他类打开,2个必须由其他类中的其他类打开。

例如:

void setTimeArray(int[] zeitArray) {
    this.timeArray = timeArray ;
}

public int[] getTimeArray() {
    return timeArray ;
}

现在我想知道我应该做些什么:

  • 我应该制作3种方法protected还是另外2种public
  • 我应该为这两种方法建立一个界面吗?

那么什么对我的应用程序的性能更清洁和更好?为什么?

4 个答案:

答案 0 :(得分:2)

如果有两个方法共有一个“主题”而另一个方法没有,请考虑将该类分为两个不同的类。如果您这样做,请考虑将使用2种方法的类移动到将使用它的包中(如果它对该包的“主题”有意义的话)。

在任何情况下,使用最低的可见度,以便您可以执行您想要的操作。

此外,更喜欢默认可见性到受保护(区别在于受保护就像默认,但也允许不同包中的子类访问这些方法)。

答案 1 :(得分:2)

您似乎对使用publicprotected等感到困惑。您班级中的公共方法构成了您班级的公共接口。在设计课程时,您需要决定要向班级的消费者公开哪些功能。

您应该只为IMO创建保护多态的方法。如果你正在使一个方法受到保护,以便包中的另一个类可以获得内部等,那么它可能是一个糟糕的类设计。你应该使方法受到保护只是因为没有其他类正在使用它现在。如果您将来需要在其他课程中使用它,则必须更改课程。

如果没有多个具体类实现该接口,则不需要创建接口。

如果获得OOP范例,类的公共接口应该非常自然地流动。决策应该涉及更多关于如何公开函数而不是要公开的

答案 2 :(得分:2)

由于您的班级的3种方法可以通过相同包的类访问,因此无需使用受保护的访问修饰符,而是可以使用默认。当您希望子类访问方法时,应使用 protected

如果您认为自己有一个类似的类,并且在其中实现了这两个方法,那么

以及 public 方法可以用于接口。这样通过界面就可以将它们联系起来。

答案 3 :(得分:1)

您应该在考虑之后立即编写界面,您可能会使用或需要它;)

除了接口:保持非接口方法protected是解决问题的有效方法。

不关心表现。针对接口进行编程或使用公共,受保护或私有等访问修饰符不会对性能产生影响。