访问修饰符的用途是什么

时间:2010-08-11 05:44:00

标签: java

是否需要在编程语言中使用访问修饰符? 如果我们选择所有成员和方法作为私人,那么输出会是什么?

13 个答案:

答案 0 :(得分:6)

参见:Encapsulation(维基百科)

当然你可以将所有成员和方法声明为私有,但是你自己就是一个非常无用的类,因为你无法从另一个类中访问它们。

答案 1 :(得分:4)

Private用于封装(OOP)以隐藏实现。 公共声明的方法提供了类的接口。

如果您将所有内容声明为私有,则无法使用其他类中的方法。 哪个会使用这样的方法的课程毫无用处。

答案 2 :(得分:2)

您需要访问修饰符才能控制方法/成员的可访问性。道德是你应该尽可能地限制私人的可访问性,但你仍然不能把所有这些都私有化。

假设您有一个实用程序类,它对所有类执行有用的操作(例如:日志记录)。在这种情况下,所有类都应该“看到”实用程序类及其成员。无限期,您无法在此处将所有内容设为私有。这只是数百个中的一个例子。

答案 3 :(得分:2)

访问修饰符用于控制字段和方法的可见性。通常我们有充分的理由不允许对其他类的对象使用方法或字段。

如果您刚开始用Java编码并将所有自己的代码保存在一个类中,那么您最终可能不需要不同的访问修饰符( 的主要方法除外{{1} })。一旦您的设计变为面向对象(=一旦您实现了多个类),访问修饰符就会变得重要。

Here is a pointer to the corresponding articel in the official Java tutorial

答案 4 :(得分:2)

private修饰符指定只能在自己的类中访问该成员。

如果您使用的是所有会员且会员是私人的,则您无法在课堂外进行访问。

检查一下: http://download.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

答案 5 :(得分:2)

访问修饰符用于封装:它们允许您在包和类中安排代码,并且只有外部可见的“官方”公共界面,同时隐藏实现细节(您想要执行的操作,以便你可以在不告诉任何人的情况下改变它。

当您将代码作为库发布以供其他程序员使用时,这尤其(仅?)很重要。即使代码仅用于您自己的程序,它也有助于将更大的程序组织成几个包。

除非你的程序只包含一个类,否则将所有内容设为私有都没有意义。 但这是一个合理的默认值:在您认为其他类需要调用它之前,请将该方法设为私有。

Java中的默认修饰符(如果未指定任何内容)受包保护。这允许从您自己的相关代码(即同一包中的代码)访问方法或字段,同时仍然将其从其他任何人隐藏。它也是一个合理的默认值,或者是私有的自然升级路径:在包之外的代码需要调用它之前,使方法受到包保护。

更明显的级别受到保护(子类可以看到它)和公共(每个人都可以看到它)。在制作公开或受保护的内容之前,请仔细考虑界面,因为以后很难对其进行更改。

答案 6 :(得分:2)

我同意,private对于成员字段来说是很好的经验法则。但是,private修饰符禁止子类访问字段和方法。如果所有方法和字段都是private,那么除了类型之外,子类与它们的超类没有任何共同之处。

如果所有方法都不可用,一个Object对另一个对象也很困难。如果所有方法(包括构造函数)都是私有的,那么即使实例化Object也很难写。

更好的讨论问题是:在privatepublic之外,为什么有protecteddefault访问修饰符。

答案 7 :(得分:1)

您可以使用默认访问权限,这将使该类在包中可用。它使你private没有人可以使用它。

答案 8 :(得分:1)

关于你的类方法或属性的可访问性我写了一个表,试图让它易于理解。

+----------------------+----------------+-----------------+----------------------+
|Access Modifiers      | Same Package   |  Subclass       |  Other packages      |
|----------------------|----------------|-----------------|----------------------|
|public                |      Y         |       Y         |            Y         |
|                      |                |                 |                      |
|protected             |      Y         |       Y         |            N         |
|                      |                |                 |                      |
|no access modifier    |      Y         |       N         |            N         |
|                      |                |                 |                      |
|private               |      Y         |       N         |            N         |
|                      |                |                 |                      |
+----------------------+----------------+-----------------+----------------------+

答案 9 :(得分:0)

当然需要访问修饰符,否则就不会添加它们。

面向对象编程和重用代码的最重要特性之一。如果您将所有内容都设为私有,那么您将无法执行此操作,而且您必须反复编写代码!使用公共或默认访问修饰符可以让您使用其他类中的代码。

答案 10 :(得分:0)

使用访问修饰符来调节对类,构造函数,方法和字段的访问,即类可以控制其他类可以访问哪些信息或数据。访问修饰符的主要贡献是封装,这是OOP概念之一。

如果您将所有成员和方法设为私有,则使您的代码无法被其他类访问。通常,您将无法重用已有的功能和代码。

答案 11 :(得分:0)

private修饰符指定只能在自己的类中访问该成员。 包内的默认修饰符使用。 protected修饰符指定成员可以在包内访问以及继承 任何级别。

答案 12 :(得分:0)

所有方法和字段都只在类中访问,即使您使用该类的对象继承或访问,也不会访问外部类。

包含四个访问说明符的

Public
Private
Protected
Default

Java有五个非访问修饰符

static
final
abstract
syncronised
volatile

来源:Tutorial Data - Java Modifier