黑马程序员技术交流社区

标题: 【小技巧】利用抽象类的静态方法获得其子类 [打印本页]

作者: kissfrd    时间: 2015-8-5 20:08
标题: 【小技巧】利用抽象类的静态方法获得其子类
在Java API中,有许多的抽象类,要使用它们提供的方法,一般需要创建一个它的子类,通过子类来调用父类的方法。然而也有一些抽象类提供了一些特殊的静态方法,这些静态方法的返回值类型是该类的对象,因此我们就可以直接通过类名调用这种静态方法,并将其赋值给抽象类本身的一个引用。这样就等同于将子类对象赋值给父类引用,即多态。然后我们就可以使用这个父类引用来调用它的方法,免去了自己创建子类的步骤,创建子类的过程已经由它的静态方法在底层代码中完成。
例如,抽象类Calendar中的静态方法static Calendar getInstance()等
我们可以用如下方式调用其中一个方法
Calendar c = Calendar.getInstance();
int i = c.getMinimalDaysInFistWeek();
System.out.println(i);


未命名图片.png (118.48 KB, 下载次数: 0)

抽象类Calendar中的静态方法

抽象类Calendar中的静态方法

未命名图片1.png (119.86 KB, 下载次数: 0)

getInstance()方法的一部分底层代码,可以看到它根据条件创建了不同的子类对象 ...

getInstance()方法的一部分底层代码,可以看到它根据条件创建了不同的子类对象 ...





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2