修饰符的探讨
一. 关于类中组成部分的名字
非静态变量:又称为成员变量,实例变量
静态变量:又称为静态成员变量,类变量
非静态方法:又称为成员方法,实例方法
静态方法:又称为静态成员方法
对于静态变量与静态方法来说,它是属于这个类的范围的。对于非静态变量与方法,它是属于实例范围的。
二.类中的修饰符
1.无修饰符
java中,当一个源文件有多个类的时候,只允许有一个public类,其余的类不能有public
2.类的可见性
类的访问控制符 | 对同个源文件的类可见 | 对同个包的类可见 | 对不同包的类可见 |
public | √ | √ | √ |
默认修饰符 | √ | √ | × |
3.finnal修饰符
当一个类不能被继承时,用finnal修饰符修饰
三.方法的访问控制符
public:没有使用限制
默认(无):只能被同一个包内的类使用
protected:只能被子类使用
private:只能在本类中使用
finnal关键字不允许方法被覆盖
关于静态方法的理解:
static的理解:
static关键字可以用来修饰方法和变量。如果一个变量使用static变量修饰,那么这个变量就是类范围内的一个属性,叫做类变量(静态变量)类中的所有对象都共享这个属性,创建对象后不会创建被static修饰的变量,static +类型名+变量名。
当方法被static修饰时:
>>和使用static修饰的变量一样,static修饰的方法可以通过类名直接调用
>>类方法中不能用this关键字,不能使用非静态变量与非静态方法
>>类方法内可以调用类方法和使用类变量
>>没有被static修饰的方法可以调用类方法
所以静态方法是没有动态特性的,对比多态。
四.变量的修饰符
访问控制符 | 对所在类可见 | 对同个包的类可见 | 对子类可见 | 对不在同个包中的类可见 |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
默认 | √ | √ | × | × |
private | √ | × | × | × |
变量的覆盖:如果子类从超类继承了一个变量,而同时子类的本身也定义了一个类型与变量名相同的成员变量,那么子类的变量将覆盖超类的变量
finnal关键字:1.必须在创建变量时给它赋值 2.变量的值不可被改变