static、private、abstract、final
其他
2018-06-08 14:07:28
阅读次数: 2
static
- 静态
可以修饰成员变量和成员方法。
- 特点
2.1 随着类的加载而加载
2.2 优先于对象存在
2.3 被类的所有对象共享
2.4 可以通过类名调用
- 静态的注意事项
3.1 在静态方法中没有this对象(静态只能访问静态)
- 静态变量和成员变量的区别
4.1 所属不同
静态变量:属于类,类变量
成员变量:属于对象,对象变量,实例变量
4.2 内存位置不同
静态变量:方法区的静态区
成员变量:堆内存
4.3 生命周期不同
静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失
4.4 调用不同
静态变量:可以通过对象名调用,也可以通过类名调用
成员变量:只能通过对象名调用
final
- 修饰
可以修饰类,方法,变量。
- 特点
2.1 它修饰的类,不能被继承。
2.2 它修饰的方法,不能被重写。
2.3 它修饰的变量,是一个常量。
2.4 基本类型值不能发生改变
2.5 引用类型地址值不能发生改变,但是对象的内容是可以改变的
2.6 只能初始化一次。
private
- 私有
可以修饰成员变量和成员方法
- 特点
被private修饰的后的成员只能在本类中被访问
- 应用
写一个类的时候,用private修饰了成员变量,那就给对应变量提供赋值和返回的方法
abstract
- 可以修饰类或方法
- 类可以扩展(增加子类),但不能直接实例化。
- abstract 方法不在声明它的类中实现,但必须在某个子类中重写
- 采用 abstract 方法的类本来就是抽象类,并且必须声明为 abstract
- 仅当 abstract 类的子类实现其超类的所有 abstract 方法时,才能实例化 abstract 类的子类。这种类称为具体类,以区别于 abstract 类 。
- 如果 abstract 类的子类没有实现其超类的所有 abstract 方法,该子类也是 abstract 类。
- abstract 关键字不能应用于 static、private 或 final 方法,因为这些方法不能被重写,因此,不能在子类中实现。
- final 类的方法都不能是 abstract,因为 final 类不能有子类。
转载自blog.csdn.net/codefarmer__/article/details/80550013