一 面向对象进阶
1、成员变量(class类,属性,方法)
成员变量又分为类属性和实例属性、
定义属性没有static修饰符修饰的就是实例属性。其中类属性从类被加载开始就存在,直到系统完全销毁该类,类属性的作用域与该类的生命周期相同。而实例属性则从类 的实例被创建起开始就存在,直到系统销毁该实例,实例属性的作用域与其对应的实例的生命周期相同。
2 Static关键字(静态成员)
[<修饰符>][static][final]<变量类型><变量名>
(1)static:表示一个类的成员变量,即静态成员变量,可以被类中的所有实例共享。
(2)final:表示一个常量。
静态变量和实例变量的去区别包括一下两点
(1)静态变量共享一块内存空间,在类的加载过程中完成静态变量的内存分配即初始化,可以使用类直接访问静态成员变量
(2)每创建一个实例,都会在堆内存中为其创建一块内存空间,每一个实例都含有一个属于自身的实例属性。
final 必须要有值 并且不能重新赋值
2.4.2 静态方法
被static修饰的方法称为静态方法。静态方法也可通过类名直接访问。在使用静态方式时需要注意,静态方法中不能访问非静态的成员,如实例属性、实例方法。
2.2 this关键字
this关键字总是指向调用该方法的对象
2.2.1 方法中调用方法或成员变量
this好关键字最大的最=作用就是让类中的一个方法访问该类中 的另一个方法或实例成员变量。
2.3 隐藏和封装
封装是面向对象的三大特性之一,它指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是直接通过该类所提供的方法实现对内部信息的操作和访问。
封装是面向对象编程语言对客观世界的模拟,客观世界的属性均 被隐藏在对象内部,外界无法直接操作和修改。如人的年龄只能随岁月的流失而变化,不能被修改年龄。
封装的目的
- 隐藏类的实现细节
- 让使用者只能通过事先预定的方法访问数据,从而可以在该方法中加入控制逻辑,限制对属性的不合理访问。
- 可进行数据检查,从而有利于保证对象信息的完整性
- 便于修改,提高代码的可维护性