在Java API中,有许多的抽象类,要使用它们提供的方法,一般需要创建一个它的子类,通过子类来调用父类的方法。然而也有一些抽象类提供了一些特殊的静态方法,这些静态方法的返回值类型是该类的对象,因此我们就可以直接通过类名调用这种静态方法,并将其赋值给抽象类本身的一个引用。这样就等同于将子类对象赋值给父类引用,即多态。然后我们就可以使用这个父类引用来调用它的方法,免去了自己创建子类的步骤,创建子类的过程已经由它的静态方法在底层代码中完成。
例如,抽象类Calendar中的静态方法static Calendar getInstance()等
我们可以用如下方式调用其中一个方法
Calendar c = Calendar.getInstance();
int i = c.getMinimalDaysInFistWeek();
System.out.println(i);
|
-
未命名图片.png
(118.48 KB, 下载次数: 4)
抽象类Calendar中的静态方法
-
未命名图片1.png
(119.86 KB, 下载次数: 3)
getInstance()方法的一部分底层代码,可以看到它根据条件创建了不同的子类对象 ...
|