繁体   English   中英

在Java中,如果您的方法具有未指定的可见性关键字,会发生什么?

[英]In Java, what happens when you have a method with an unspecified visibility keyword?

我已经和android一起工作了几年,没有一次我有老师或任何人告诉我该怎么做。 这整个时间我都在想这个。

当你有一个方法我通常会看到......

public void method(){
//Stuff
}

要么

private void method(){
//stuff
}

我知道void是一种没有返回值的方法,而public是方法的可见性,但是如果我只是使用这样的东西就行了......

void method(){
//stuff
}

因为方法可见性只是默认的默认值?

我不知道我是否对,是指定“公共”还是“私人”的好习惯?

未指定任何内容具有特定含义:

  • public - 任何类都可以访问此成员
  • protected - 子类可以访问此成员(以及同一个类或同一个包中的代码)
  • private - 同一类中的唯一代码可以访问此成员
  • 没有(“默认”访问) - 只有同一个包中的代码才能访问该成员

可以说最后一个案例应该有自己的关键字,但我们现在坚持使用它。 除非你真的想要使用默认可见性,否则不能指定任何内容的形式很差 - 你是否真的因某种原因需要包可见性,或者你只是默认包装可见性? 最佳做法是明确使用private非公共成员,除非您需要其中一个成员。

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

  1. public - 使您的方法可供任何其他类访问。
  2. protected - 使您的方法可以被同一个包中的任何类或类的任何子类访问。
  3. (默认,即无修饰符) - 使您的方法只能访问同一个包中的类。
  4. private - 使您的方法只能访问当前类。

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

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

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

在此输入图像描述

默认访问修饰符 - 无关键字:

默认访问修饰符意味着我们没有为类,字段,方法等显式声明访问修饰符。

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

私人访问修改器 - 私人:

声明为private的方法,变量和构造函数只能在声明的类本身中访问。

专用访问修饰符是限制性最强的访问级别。 类和接口不能是私有的。

如果类中存在公共getter方法,则可以在类外部访问声明为private的变量。

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

公共访问修饰符 - 公共:

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

但是,如果我们尝试访问的公共类位于不同的包中,则仍需要导入公共类。

由于类继承,类的所有公共方法和变量都由其子类继承。

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

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

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

受保护的访问权限使子类有机会使用辅助方法或变量,同时防止非相关类尝试使用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM