java中类的修饰符有以下几种:private 、default(package)、protect、public,其范围如下表:
范围 | private | default | protect | public |
同一类 | 是 | 是 | 是 | 是 |
同一包中的类 | 否 | 是 | 是 | 是 |
同一包中的类,不同包的子类 | 否 | 是 | 是 | |
所有 | 否 | 是 |
注意:被这四个修饰的变量在继承上表现为,private 修饰变量不可继承,default只有同包子类可以继承,protect public 子类都继承。
特殊说明:还有final、和abstract修饰符:
final修饰的类不能被继承,没有子类。
abstract修饰的类不能被实例化,必须被子类继承。类只要有一个抽象方法就必定是抽象类,但抽象类不一定要有抽象方法。
Java中的变量:
1、java中没有全局变量,只要方法变量、实例变量(类中的非静态变量)、类变量(类中的静态变量)
2、方法中的变量不能有访问修饰符。
3、实例变量修饰符private 、default(package)、protect、public和类的范围是一样,下面着重介绍 其他几种:
修饰符 | ||
名称 | 说明 | 备注 |
static | 静态变量(又称为类变量,其它的称为实例变量) |
可以被类的所有实例共享。
并不需要创建类的实例就可以访问静态变量
|
final | 常量,值只能够分配一次,不能更改 |
注意不要使用const,虽然它和C、C++中的const关键字含义一样
可以同static一起使用,避免对类的每个实例维护一个拷贝
|
transient | 告诉编译器,在类对象序列化的时候,此变量不需要持久保存 | 主要是因为改变量可以通过其它变量来得到,使用它是为了性能的问题 |
volatile | 指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理 |
接口:
一般用public
还有一些关键字synchronized属于多线程并发,后期将有说明