java学习--修饰符
Java语言提供了很多修饰符,主要分为以下两类:
- 访问修饰符
- 非访问修饰符
访问控制修饰符
访问控制修饰符用来修饰类和类内部的成员变量和成员方法,来确定其访问权限
类的访问控制修饰符只有两种 default 和 public
default (即缺省,什么也不写): 只在同一包内可见。不能引入其包中
类A为default,当类A和类B位于同一个包内,那么可以在类B中直接使用new A() 来创建类A的实例,而不需要先引入类A
当类A和类B不位于同一个包中,则在类B文件中无法引入类A,更无法在类B中使用new A() 来创建类A的实例
public : 对所有类可见。同一个包中可直接使用,不需要引入。不同包中则需要先引入才能使用
类A为public ,当类A和类B位于同一个包内,那么可以在类B中直接使用new A() 来创建类A的实例,而不需要先引入类A
当类A和类B不位于同一个包中,则在类B文件中引入类A后,在类B中也可以使用new A() 来创建类A的实例
成员变量和成员方法的访问控制修饰符有四种 private,default,protected,public
主要通过以下几个方面来判断其访问范围
- 类内访问 和 类外访问
- 包内访问 和 包外访问
- 继承类内访问
继承类内的访问又分为
- 包内继承类的访问
- 包外继承类的访问
private: 只能在本类内直接访问,不能再类外访问。也不能再继承类内直接访问
default:只能在包内访问,而不能在包外访问。只要在包内,类内,类外,继承类内都可以直接访问
protected:只能在包内和包外的继承类内访问。
在包内时,与default相同,但在包外时,继承类内可以直接访问继承于父类的protected成员,但不能直接访问继承于父类的default成员
public:在所有范围内可以直接访问
类内访问和类外访问
类内访问是指在类内内部直接访问该类成员,而不需要先创建实例
类外访问是指在该类的外部(也就是其他类中)访问该类的成员,需要先在其他类中创建该类的实例,再通过实例来访问该类的成员
修饰符 | 当前类 | 同一包内非继承类 | 同一包内继承类 | 不同包继承类 | 不同包非继承类 |
---|---|---|---|---|---|
public |
Y | Y | Y | Y | Y |
protected |
Y | Y | Y | Y/N(说明) | N |
default |
Y | Y | Y | N | N |
private |
Y | N | N | N | N |
非访问修饰符
为了实现一些其他的功能,Java 也提供了许多非访问修饰符。
static 修饰符,用来修饰类方法和类变量。
final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
abstract 修饰符,用来创建抽象类和抽象方法。
synchronized 和 volatile 修饰符,主要用于线程的编程。