Java.
在以前的示例和上机代码中,我们已经使用了静态成员变量和静态方法。如果我们看到一个成员变量或方法是通过类名来访问的,那么我们就可以说该成员变量或者方法是静态的。例如,在本书中我们已经用过很多次System.out。因为System是一个类,我们可以推断out是System类中的一个静态成员变量。out成员变量代表标准输出,我们不需要实例化一个System对象来访问该成员变量。
下面,我们用一个示例来演示修改和访问静态成员变量和方法。
除了声明静态成员变量和方法外,关键字static还有另外一种用法。Java类可以包含一个静态初始化块,静态初始化块是一组当类被JVM的类加载器加载时执行的语句。
类被类加载器加载一次,静态初始化块的作用是允许类执行任何所需的只需要发生一次的设置任务。
实例初始化块与静态初始化块类似,它在类的对象每次实例化时执行一次。实例初始化块和构造器二者之间的不同之处在于实例初始化块在构造器调用之前执行。
实例初始化块的语法形式很简单,只需要在类中用大括号括起代码块即可。注意,实例初始化块不使用任何关键字,也没有名称。
实例初始化块中的语句在任何父类构造器调用之后,在子类构造器调用之前执行。当对象被实例化,并且类包含有实例初始化块时,下面的事件按顺序发生:
子类中相应的构造器被调用。
执行对super的调用,控制流程跳转到相应的父类构造器。
父类构造器执行完,控制流程跳转回子类构造器。
在该子类构造器中的super()后面的任何语句执行前,实例初始化块执行。
最后,执行子类构造器中super()后面的语句。
我们已经知道,在类内部可以定义成员变量与方法。在Java中,还可以在类的内部定义类。这种在类的内部定义的类,称为内部类。内部类所在的类称为外部类。
Java中的内部类可以分为四种,分别是:静态内部类、成员内部类、局部内部类、匿名内部类。表8-1列出四种内部类类型的说明。
局部内部类是在类的方法内部定义的类。局部内部类只能在方法内部中使用。一旦方法执行完毕,局部内部类就会从内存中被清除。
匿名内部类是一种特殊的内部类,这种类没有名字。匿名内部类的定义与对象的创建合并在一起,整个动作看起来像产生对象似的。匿名内部类是为唯一对象而定义的类。当我们只需要创建一个类的对象,而且用不上它的名字时,使用内部类可以使代码看上去简洁清楚。
day13
最新推荐文章于 2022-04-23 08:59:59 发布