我想应该需要有构造函数的,而且一定要有那个无参数的默认构造函数,你试验的时候没有写构造函数,虽然你没写,但java默认类都有一个无参数的构造函数。这是我的理解,未必正确,欢迎大虾指教。

解决方案 »

  1.   

    看看我下面这两个class。
    public class LazySingleton {
        protected LazySingleton(String s) {
        };
    }
    public abstract class ExtendLazySingleton extends LazySingleton{
        public ExtendLazySingleton(){
            super(new String());
        }
    }
    这里的LazySingleton类,就没有无参构造函数。但是编译没有报错哦!
      

  2.   

    我对此有疑问,什么叫“明确的构造函数”,
    是必须声明一个public SomeClass(){}吗,
    但我们知道,java中所有的类继承于Object,
    如果所定义的类里面没有构造函数,
    系统会给一个默认的构造函数,
    这算不算一个“明确的构造函数”呢。
    这句话“抽象类继承实体类,是否需要实体类必须有明确的构造函数”
    是不是该这样理解:
    按照面向对象概念,实体类要有明确的构造函数,但你不用担心,
    如果没有,java系统已经帮你做了.
      

  3.   

    +------------------------------------------------------------+
    | 抽象类是可继承实体类,但前提是实体类必须有明确的构造函数。 |
    +------------------------------------------------------------+这好像是句废话, 每个类都会有构造函数, 即使没有显式地写出来. 我的疑问和楼主一样: 到底什么样的实体类才不能被抽象继承(当然除了final类)?