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

  • 本文关键字:访问 受保护 java
  • 更新时间 :
  • 英文 :


我在理解Java中的访问修饰符方面有问题。

  1. public:可以在任何地方使用。
  2. private:只能在同一个类中使用
  3. protected:只能在子类中使用

我看了很多例子,但我不能理解。我只知道它的定义。请有人帮我解决这个问题,给我更多的例子。

什么样的程序会使用private ?

什么样的程序会使用protected ?

什么样的程序会使用public ?

这是非常基本的OOP概念。当类不需要公开它的参数时,它会将它们定义为"private"。外部的任何类都不能访问它。这些变量要么只供类本身使用,要么有公共getter和setter,它们提供对这些变量的间接但受控的访问。
例如年龄。假设有人需要将负值设置为age,那么setter方法可以避免设置该值。在OOP中,将变量公开为公共是一种不好的做法。如果你这样做,任何其他可以创建类实例的逻辑都可以改变变量的值。

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

公共访问修饰符主要用于方法

您可以在所有类型的程序中使用这三个,除了非常简单的程序,其中所有内容通常都是公共的。

最好的做法是尽可能使用最严格的访问修饰符。访问修饰符的存在是为了帮助您避免犯错误——它们实际上不是必需的本身,但它们非常有用。如果你正在编写一个供其他人使用的库(现在还没有,但将来可能会这样做),它们还可以阻止其他人对你的代码做奇怪的事情。

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

public class Book
{
    private String title;
    public String getTitle() {return title;}
    public Book(String t) {title = t;}
    ...
}

注意title是私有的,所以你不能直接获取或设置图书的标题。您可以使用getTitle方法间接获取它,该方法是公共的。您只能在创建Book时设置一次。

Book类中的

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

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

编辑:另外,你对protected的看法是错误的。protected内容可以被子类或同一包中的类访问。还有一个默认的访问修饰符,它没有关键字,如果你不使用public, protectedprivate,你会得到它。默认的访问修饰符使得只能对同一个包访问。

private用于在类中有变量或方法,而这些变量或方法不会在类外使用。

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

protected用于仅在该类及其子类中使用变量的情况。

最新更新