public
公共的。Java语言中访问限制最宽的修饰符,被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
private
私有的。Java语言中对访问权限限制的最窄的修饰符,被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
protected
被保护的。介于public和private之间的一种访问修饰符。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
default:
默认的。即不加任何访问修饰符。该模式下,只允许在同一个包中进行访问。
static:
用来修饰静态类、方法和变量。
final:
用来修饰不会被修改的方法和变量。
abstract:
用来修饰抽象类和方法。
volatile:
修饰被不同线程访问和修改的变量,都会直接读取原值,而不会因编译器的优化而读取备份。const:const关键字是在类中定义常量,而define()函数也是定义常量,但它是在类外定义常量,调用方式和静态成员是一样的,都是通过类名或者在成员方法中使用self关键字进行访问,但是不建议使用对象引用进行访问。
static是静态的,保存在内存中的初始化静态段中。不能使用
t
h
i
s
访
问
平
常
的
变
量
是
保
存
在
堆
中
的
输
出
s
t
a
t
i
c
的
内
容
:
e
c
h
o
P
r
e
s
o
n
:
:
this访问 平常的变量是保存在堆中的 输出static的内容: echo Preson::
this访问平常的变量是保存在堆中的输出static的内容:echoPreson::name
静态的成员属性效率较高,因为不必需要实例化成对象,不用开辟空间
在内部输出静态变量的时候尽量用self::
n
a
m
e
;
防
止
静
态
变
量
名
被
改
变
在
外
部
输
出
静
态
变
量
的
时
候
尽
量
用
类
名
:
:
name;防止静态变量名被改变 在外部输出静态变量的时候尽量用类名::
name;防止静态变量名被改变在外部输出静态变量的时候尽量用类名::name; 例如Person::
n
a
m
e
多
个
对
象
访
问
的
静
态
成
员
属
性
是
同
一
个
(
共
享
同
一
个
静
态
成
员
属
性
)
静
态
的
成
员
方
法
中
,
不
允
许
有
非
静
态
的
内
容
name 多个对象访问的静态成员属性是同一个(共享同一个静态成员属性) 静态的成员方法中,不允许有非静态的内容
name多个对象访问的静态成员属性是同一个(共享同一个静态成员属性)静态的成员方法中,不允许有非静态的内容this;
必须要记住的下面
静态的成员方法在类的内部使用
t
h
i
s
调
用
静
态
成
员
方
法
在
类
的
内
部
可
以
使
用
s
e
l
f
:
:
this调用 静态成员方法在类的内部可以使用self::
this调用静态成员方法在类的内部可以使用self::name;
静态的成员方法在类的外部可以使用对象调用
1静态的成员方法在类的外部可以使用类名::方法名()调用
静态的成员方法中不允许有
t
h
i
s
;
推
荐
使
用
类
名
调
用
,
效
率
较
高
静
态
的
成
员
方
法
在
类
的
外
部
都
可
以
使
用
类
名
:
:
方
法
名
(
)
调
用
成
员
方
法
中
如
果
没
有
包
含
任
何
的
this; 推荐使用类名调用,效率较高 静态的成员方法在类的外部都可以使用类名::方法名()调用 成员方法中如果没有包含任何的
this;推荐使用类名调用,效率较高静态的成员方法在类的外部都可以使用类名::方法名()调用成员方法中如果没有包含任何的this,该方法默认的成员静态方法