🐿️作用域
2021-3-5
| 2023-8-3
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
我们经常看到publicprotectedprivate这些修饰符。在Java中,这些修饰符可以用来限定访问作用域

public

定义为publicclassinterface可以被其他任何类访问:
上面的Hellopublic,因此,可以被其他包的类访问:
定义为publicfieldmethod可以被其他类访问,前提是首先有访问class的权限。
 
 

private

定义为privatefieldmethod无法被其他类访问:
实际上,确切地说,private访问权限被限定在class的内部,而且与方法声明顺序无关。推荐把private方法放到后面,因为public方法定义了类对外提供的功能,阅读代码的时候,应该先关注public方法:
 
由于Java支持嵌套类,如果一个类内部还定义了嵌套类,那么,嵌套类拥有访问private的权限:
定义在一个class内部的class称为嵌套类(nested class),Java支持好几种嵌套类。
 

protected

protected作用于继承关系。定义为protected的字段和方法可以被子类访问,以及子类的子类:
上面的protected方法可以被继承的类访问:
 

package

最后,包作用域是指一个类允许访问同一个package的没有publicprivate修饰的class,以及没有publicprotectedprivate修饰的字段和方法。
只要在同一个包,就可以访问package权限的classfieldmethod
注意,包名必须完全一致,包没有父子关系,com.apachecom.apache.abc是不同的包。
 

局部变量

在方法内部定义的变量称为局部变量,局部变量作用域从变量声明处开始到对应的块结束。方法参数也是局部变量。使用局部变量时,应该尽可能把局部变量的作用域缩小,尽可能延后声明局部变量。
 

final

Java还提供了一个final修饰符。final与访问权限不冲突,它有很多作用。
final修饰class可以阻止被继承:
final修饰method可以阻止被子类覆写:
final修饰field可以阻止被重新赋值:
final修饰局部变量可以阻止被重新赋值:
 
 
 
 
如果不确定是否需要public,就不声明为public,即尽可能少地暴露对外的字段和方法。
把方法定义为package权限有助于测试,因为测试类和被测试类只要位于同一个package,测试代码就可以访问被测试类的package权限方法。
一个.java文件只能包含一个public类,但可以包含多个非public类。如果有public类,文件名必须和public类的名字相同。
  • Java
  • 包package内部类
    目录