1.访问修饰符

在每个方法之前,程序员可以指定所谓的访问修饰符。其中包括以下关键字:public, protected, private

这些访问修饰符允许您限制其他类对方法的访问。

例如,如果在private方法声明之前写关键字,则只能从声明它的同一个类中调用该方法。关键字public允许从任何类的任何方法访问标记的方法。

这样的修饰符一共有3个,但是一个方法的访问有4种。这是因为没有访问修饰符也意味着一些事情。

从...访问
修饰符 任何班级 儿童班 它的包装 它的班级
public 是的 是的 是的 是的
protected 是的 是的 是的
没有修改器 是的 是的
private 是的

1.public修改器

可以从程序的任何地方public访问用修饰符标记的方法(或变量,或类)。这是最高程度的开放——没有限制。

2.private修改器

用修饰符标记的方法(或变量,或类)只能从声明它的同一个类中private访问。对于所有其他类,标记的方法(或变量)是不可见的。就好像它不存在一样。这是最高级别的限制——只有它自己的类。

3.无修饰符(默认修饰符)

如果一个方法(或变量)没有用任何修饰符标记,那么它被认为具有“默认修饰符”。具有该修饰符(即根本没有)的变量或方法对于声明它们的包中的所有类都是可见的。并且只对他们。这个修饰符有时也被称为package-private,暗示对变量和方法的访问是对它们的类​​所在的整个包开放的。

4.protected修改器

如果方法用修饰符标记protected,则可以从同一个类、同一个包和后代(继承声明该​​方法的类的类)访问它。我们将在 Java Core 探索中更详细地分析这个主题。

您可以在所有方法(以及所有类和类变量)上使用public修饰符,直到完成 Java 语法任务。当我们开始积极学习 OOP 时,您将需要其他修饰符。

为什么需要访问修饰符?

对于同时由数十名和数百名程序员编写的大型项目,它们变得必不可少。

有时,在某些情况下,程序员想要将一个过大的方法拆分成多个部分,并将部分代码移动到辅助方法中。但与此同时,他或她也不希望其他程序员调用这些辅助方法,因为相应的代码可能无法正常工作。

所以他们想出了这些访问修饰符。如果你用private标记一个辅助方法,那么除了你的类之外没有任何代码可以看到你的辅助方法。



2.static关键词

关键字static使方法静态化。我们稍后会看看这意味着什么。现在,只需记住一些关于静态方法的事实。

事实 1. 静态方法不附加到任何对象,而是属于声明它的类。要调用静态方法,您需要编写:

ClassName.MethodName()

静态方法的例子:

班级名称 静态方法名
Thread.sleep() Thread sleep()
Math.abs() Math abs()
Arrays.sort() Arrays sort()

如果从其类中调用静态方法,则可以省略静态方法名称之前的类名。这就是为什么您不需要在调用的每个静态方法的名称之前写上的原因。Solution

事实 2. 静态方法不能访问它自己类的非静态方法。静态方法只能访问静态方法。结果,我们将要从main静态方法调用的所有方法都声明为。

为什么?当您开始学习 OOP 并了解静态方法的工作原理时,您将能够自己回答这个问题。



3.throws关键词

您可能在方法声明中看到过另一个关键字 — 关键字throws。与访问修饰符和static关键字不同,this 关键字放在方法参数之后:

public static Type name(parameters) throws Exception
{
  method body
}

我们稍后在研究异常时会考虑它的确切含义。

但从表面上看,我们可以说用 throws 关键字标记的方法可以抛出错误(异常),这意味着该类Exception (以及继承它的类)的实例。如果一个类中可能出现几种不同类型的错误,那么您需要列出每一种错误,并用逗号分隔。


4.main方法

声明方法的行包含所有修饰符,将影响如何从其他类和方法调用此方法。它会影响方法将返回的结果类型,并指示在它运行时可能出现的错误。

这样的一行称为方法声明,一般格式如下:

access modifier static Type name(parameters) throws exceptions
方法声明的一般格式

哪里access modifiers 被替换为public, protected, private, 或什么都没有;

如果方法是静态的,则static出现关键字(非静态方法不存在)

Type是返回值的类型(void如果没有结果)

现在您可能了解方法声明中所有关键字的含义main

public static void main(String[] args) throws Exception
声明main方法

main()如关键字所示,可以从任何类访问该方法public

该方法是静态的,因此可以将其显式调用为Solution.main().

main方法不返回任何结果。返回类型是void(无类型)。

main方法采用参数(!):一个字符串数组。参数名称args在我们的脑海中暗示了“参数”。当程序启动时,您可以向它传递参数——一个字符串数组。它们将包含在方法args 中的数组中main()

方法中可能会出现未处理的错误Exception(或其后代)main()