我在了解Java中的访问修饰符时遇到了问题。
public
:可以在任何地方使用。private
:只能在同一个班级内使用。protected
:只能在子类中使用。我看到很多例子并试过但我无法理解。 我只知道定义。请任何人帮助我一个给我更多的例子。
哪种程序会使用private
?
哪种程序会使用protected
?
哪种程序会使用public
?
答案 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
还有一个默认的访问修饰符,它没有关键字,如果您不使用public
,protected
或private
,则会获得该关键字。默认访问修饰符仅允许同一个包访问。
答案 2 :(得分:1)
private
。
public
用于需要在此类之外访问的变量和方法。
protected
。
here就是一个很好的例子。