私有访问修饰符和受保护的访问修饰符

时间:2014-03-11 03:59:42

标签: java

我在了解Java中的访问修饰符时遇到了问题。

  1. public:可以在任何地方使用。
  2. private:只能在同一个班级内使用。
  3. protected:只能在子类中使用。
  4. 我看到很多例子并试过但我无法理解。 我只知道定义。请任何人帮助我一个给我更多的例子。

    哪种程序会使用private

    哪种程序会使用protected

    哪种程序会使用public

3 个答案:

答案 0 :(得分:2)

这在OOP概念中非常基础。当类不需要公开它的参数时,它会将它们定义为“私有”。外面的任何课程都无法访问它。这些变量要么仅用于类本身,要么有公共getter和setter,它们可以间接但可控制地访问这些变量。
例如年龄。假设有人需要将负值设置为年龄,那么setter方法可以避免设置该值。在OOP中将变量公开为公共是一种不好的做法。如果这样做,任何其他可以创建类实例的逻辑都可以更改变量的值。

当我们需要允许子类也可以使用或访问这些变量时,变量被标记为“受保护”。

大多数公共访问修饰符用于方法

答案 1 :(得分:2)

你会在所有类型的程序中使用这三种程序,除了非常简单的程序,其中一切都是公开的。

一个好的做法是尽可能使用限制性最强的访问修饰符。存在访问修饰符可以帮助您避免犯错误 - 它们本身并不是必需,但它们非常有用。如果你正在为其他人编写一个图书馆(你不是,但将来可能),他们也会阻止其他人用你的代码做奇怪的事情。

通常,一个类与一件事有关(例如图书馆中的一本书)。如果您正在编写库系统,那么您可能会有这样的类:

public class Book
{
    private String title;

    public String getTitle() {return title;}

    public Book(String t) {title = t;}

    ...
}

请注意title是私有的,因此您无法直接获取或设置图书的标题。您可以使用公共的getTitle方法间接获取它。创建工作簿时,您只能设置一次。

Book类中的代码仍然可以设置标题,所以这不是万无一失的。 final会更好,但这是为了演示访问修饰符,而不是final

您可以公开title,并说您不会更改图书的标题,但稍后您可能会错误地执行此操作。同样,访问修饰符可以帮助您防止自己(有时是其他人)犯错误。

编辑:另外,你对protected提出错误。 {em>可以访问子类或同一包中的类protected还有一个默认的访问修饰符,它没有关键字,如果您不使用publicprotectedprivate,则会获得该关键字。默认访问修饰符仅允许同一个包访问。

答案 2 :(得分:1)

当你在类中有变量或方法而不在类外使用时,会使用

private

public用于需要在此类之外访问的变量和方法。

当变量只需要在该类及其子类中使用时,使用

protected

here就是一个很好的例子。