封装:封装是将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。对象中的数据称为实例域,操纵数据的过程称为方法。对于每个特定的类实例(对象)都有一组特定的实例域值。这些值的集合就是这个对象的当前状态(state)。实现封装的关键在于绝对不能让类中的方法直接访问其他类型的实例域。程序仅通过对象的方法与对象数据进行交互。
类之间的最常见的关系:
- 依赖:一个类A的方法操纵另外一个类B的对象,就说A依赖B。
- 聚合:一个A对象包含一些B对象。聚合关系意味着类A的对象包含类B的对象。
- 继承:通过扩展一个类来创建另外一个类的的过程称为继承。子类具有基类全部的属性和方法。
static:static方法就是没有this方法。在static方法内部不能调用非静态方法,反之可以。而且在没有创建任何对象的前提下,仅仅通过类本生来调用static方法。
1)static变量
static变量也称作静态比变量,静态变量和非静态变量的区别在于,类中只有一个这样的静态变量,被所有对象copy,可以直接通过类引用这个变量。
static是不允许用来修饰局部变量。
2)static方法
static方法不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。可以直接通过类来访问方法。
下面两种情况下使用静态方法:
- 一个方法不需要访问对象状态,其所需参数都是通过显式参数提供。
一个方法只需要访问类的静态域。
3)static代码块
static关键字还有一个比较关键的作用就是用来形成静态代码块以优化程序性能。static块可以在类中的任何地方,允许有多个static块。当类初次被加载时,会按照static块的顺序来执行每个static块,并只会执行一次。