公共/默认类背后的设计决策?

时间:2011-07-24 05:34:15

标签: java class

将类限制为公共级别或默认级别访问的设计决策可能是什么?受保护的成员比默认成员更明显,那么为什么跳过受保护的?

编辑:我的意思是TOP级别课程

4 个答案:

答案 0 :(得分:4)

类的可见性级别与成员的可见性级别不同!

对于成员来说,子类化的整个想法发挥作用,因此“受保护”的概念。

但是对于课程,你要么在你的包装外可见,要么你不是。您的子类没有可见或不可见的概念。如果一个子类无法看到它的超类,那将是奇怪的,错误的。

此外,子包实际上并不像子类一样,所以再次,类上的“受保护”实际上不起作用。

我们在这里谈论顶级课程,对吧?会员班是一个不同的故事。

答案 1 :(得分:0)

我们只能猜测具体的设计决策,但protected是必要的,因此您的代码组件外部可以扩展您的组件。默认可见性只是在您自己的包中提供共享,而不会将其暴露给外部代码。

注意:我的回答仅适用于班级。

答案 2 :(得分:0)

this中的Quoto:

Modifier    | Class | Package | Subclass | World

public      |  Y    |    Y    |    Y     |   Y

protected   |  Y    |    Y    |    Y     |   N

no modifier |  Y    |    Y    |    N     |   N

private     |  Y    |    N    |    N     |   N

default和protected之间的主要区别是protected可以通过子类访问,但默认不能。 公共和默认之间的设计决策是,可以从其他包访问,但另一个不能。

比较两种比较两种不同的东西。

答案 3 :(得分:-1)

没有这样的设计决定。类可以是公共的,受保护的,包私有的(或默认的),也可以是私有的。

class TopLevelClass
{
     public class PublicClass
     {
     }

     protected class ProtectedClass
     {
     }

     /*package private*/ class PackagePrivateClass
     {
     }

     private class PrivateClass
     {
     }
}