java抽象类不能实例化?

java中抽象类不可以实例化,这个概念一直在我脑子里。那这行代码是怎么回事?TimeZone tz =TimeZone.getDefault(); 我查了api,TimeZone是定义是:public abstract class TimeZone。而且我也查了,java api中也没有TimeZone的实现子类啊...困惑...

很简单,抽象类不象具体类那样描述一类具体事物,它是提取多种具有相似性的具体事物的共同特征而产生的,比如,helicoptor,jet,fighter父类plane,有start(),takeOff(),speedUp(),changeDirection()等方法,这是共性,但现实中有一个具体的plane吗?没有,它是抽象出来的,根本不存在。所以实例化一个plane是没有意义的,因此面向对象程序设计机制禁止对象实例化
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-02
java抽象类不能实例化。
java抽象类:使用了关键词abstract声明的类叫作“抽象类”。
如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。
抽象方法,属于一种不完整的方法,只含有一个声明,没有方法主体。
第2个回答  2010-09-30
TimeZone.getDefault();是条用TimeZone里边的getDefault()方法啊,这个方法里边一定是返回了一个TimeZone的子类,所谓的不能实例化是指不能写成:
TimeZone tz =new TimeZone();
第3个回答  2010-10-02
getDefault()可以是一个static函数,返回的可以是一个匿名内隐类啊。
第4个回答  推荐于2016-11-29
Java 源代码如下:
public static TimeZone getDefault() {
return (TimeZone) getDefaultRef().clone();
}
然后看getDefaultRef()方法:
static TimeZone getDefaultRef() {
TimeZone defaultZone = defaultZoneTL.get();
if (defaultZone == null) {
defaultZone = defaultTimeZone;
if (defaultZone == null) {
// Need to initialize the default time zone.
defaultZone = setDefaultZone();
assert defaultZone != null;
}
}
// Don't clone here.
return defaultZone;
}
这时defaultZoneTL.get()返回的是InheritableThreadLocal类的对象本回答被提问者采纳
相似回答