在Java中,当你有一个未指定可见性关键字的方法时会发生什么?

我已经使用了几年的android,一次我没有一个老师或任何人告诉我该怎么做。 这整整一次我都想知道这个。

当你有一种方法,我通常看到…

public void method(){ //Stuff } 

要么

 private void method(){ //stuff } 

我知道一个void是一个没有返回值的方法,而public是某种方法的可见性,但是如果我只是使用这样的东西,那么它会影响吗?

 void method(){ //stuff } 

因为那么方法可见性将只是默认?

我不知道自己是否正确,指定“公共”还是“私人”的做法是好的做法?

Solutions Collecting From Web of "在Java中,当你有一个未指定可见性关键字的方法时会发生什么?"

没有指定任何东西具有特定的含义:

  • public – 任何职业都可以访问这个成员
  • protected – 子类可以访问这个成员(以及同一个类或同一个包中的代码)
  • 只有在同一个类中的private代码才能访问这个成员
  • 什么都没有(“默认”访问) – 只有同一个包中的代码才能访问这个成员

可以说,最后一个案例应该有自己的关键字,但我们现在坚持下去。 除非你真的想要使用默认的可见性,否则没有指定任何东西 – 这是很糟糕的forms – 你是否真的需要软件包的可见性,或者你只是默认打包所有东西的可见性? 最好的做法是明确地使用private的非公共成员,除非你需要其他人之一。

Java有四个级别的可见性:public,protected,(default),private。 这些的含义如下:

  1. 公开 – 让你的方法可以被任何其他类访问。
  2. 保护 – 使您的方法可以访问同一个包中的任何类或者您的类的任何子类。
  3. (默认,即没有修饰符) – 使您的方法只能访问相同包中的类。
  4. 私人 – 使您的方法只能访问当前类。

在类,方法和字段中指定访问修饰符时适用相同的规则。

Java有四个级别的可见性:public,protected,(default),private

  1. 可见的包。 默认。 不需要修饰符。
  2. 仅对class级可见(私人)。
  3. 对世界可见(公众)。
  4. 可见包和所有子类(受保护)。

在这里输入图像说明

默认访问修饰符 – 没有关键字:

默认访问修饰符意味着我们不显式声明一个类,字段,方法等的访问修饰符

没有任何访问控制修饰符声明的variables或方法可用于同一个包中的任何其他类。 缺省修饰符不能用于接口中的方法,字段。

私人访问修饰符 – 私有:

被声明为私有的方法,variables和构造函数只能在声明的类本身内访问。

私人访问修饰符是最严格的访问级别。 类和接口不能是私有的。

如果公共getter方法存在于类中,那么声明为private的variables可以在类外部访问。

使用私有修饰符是对象封装自己并隐藏外部数据的主要方式。

公共访问修饰符 – public:

公开的类,方法,构造函数,接口等可以从任何其他类访问。 因此,在公共类中声明的字段,方法,块可以从属于Java Universe的任何类访问。

但是,如果我们试图访问的公共类是在不同的包中,那么公共类仍然需要导入。

由于类的inheritance,一个类的所有公共方法和variables都被它的子类inheritance。

受保护的访问修饰符 – 受保护:

在超类中声明保护的variables,方法和构造函数只能由其他包中的子类或受保护成员类的包中的任何类访问。

受保护的访问修饰符不能应用于类和接口。 方法可以将字段声明为protected,但是接口中的方法和字段不能声明为protected。

受保护的访问使子类有机会使用助手方法或variables,同时防止不相关的类尝试使用它。