1. 类的加载开始于第一次访问该类静态成员的时候。因为构造器默认是静态的,所以通过构造器创建类,实际上也是访问类的静态成员。
2. 若类是从基类继承而来,则首先加载基类。若基类也是从其他类继承而来,则一直向上查找到根基类,首先加载根基类的静态成员,并对其初始化,再向下执行加载,直到当前类。
3. 创建当前类的对象。在任何动作之前,首先将存储空间初始化成二进制0。然后对象中所有基本类型被初始化为默认值(0, false, null)。调用基类构造器(过程同上)。
4. 按次序初始化变量,执行构造器其他部分。
顺便说一句final
final的作用跟C里面的const类似。可以修饰类、方法和数据。
修饰数据时,数据为常量。
修饰引用时(个人认为类似const修饰指针),引用的指向不可变,但指向地址所存的内容(值)是可以变的。
修饰类时类不可以被继承。
修饰方法时方法不可以被覆盖。
这里说一下private。private方法默认是final的,但是在继承类的时候,发现子类中“覆盖”一个private方法是不会报错的。实际上这不是真正的覆盖。因为基类的private成员对子类来说是不可见的,子类并不知道基类有这样一个private方法。所谓的”覆盖“,其实是在子类中创建了一个与基类中方法同名同参数的新方法,与基类中的方法并无关系。
阅读(153) | 评论(0) | 转发(0) |