我看到这样的描述----
    Java不会为子类创建不带参数的缺省构造函数,所以当不是从Object继承的子类
是不会有默认构造函数的
    这句话中的Object是否指的是java.lang包中的类Object?另外,
这句话的意思是否是:假使A从Object中继承,B继承A,那A中会有默认的构造函数(如果自己未定义的话),而B中则不存在默认的构造函数.而一个类必须有构造函数的存在
也就是说,此时,必须在B中自己写一个构造函数?请指教

解决方案 »

  1.   

    不懂.
    所有的类都是继承自Object的阿.
    所以所有的类都会有默认构造函数
      

  2.   

    所有的类都是继承自Object的阿.
    所以所有的类都会有默认构造函数
    这里的意思是说如果继承的时候
    构造函数是不会被继承的.
      

  3.   

    构造函数是用来实现一个对象的
    当你用new的时候,就调用的构造函数~~~
    没有构造函数怎么创建对象?????
      

  4.   

    Java不会为子类创建不带参数的缺省构造函数,所以当不是从Object继承的子类
    是不会有默认构造函数的//这句话本来就有问题 java有可能有不从object继承的子类吗?不可能!应该说不直接继承object类,也就是说:假使A从Object中继承,B继承A,如果a中没有无参构造函数,也就是说a写了个有参的构造函数,则b就必须写一个有参的构造函数,不能不写了,因为java在实例的时候的递归调用父类的构造函数的,一旦b中没写,则会调用父类的默认构造函数.所以就会报错了.
      

  5.   

    所有的类都是继承自Object
    所以所有的类都会有默认构造函数
    当类中定义了自己的构造函数后,默认构造函数就不能再用同时,B中不是一定要自己写一个构造函数
      

  6.   

    public class a {}
    public class b extends a {}
    这样a,b都有默认的无参数构造函数
    a a1 = new a();
    b b1 = new b();
    是正确的
    如果你重载了a的构造函数如:
    public class a
    {
    a(int i)
    {

    }

    }
    那么b也必须覆盖父类a的构造函数
    public class b extends a
    { public b(int i) {
    super(i);
    }

    }
    那么此时a,b的构造函数只能是 a a1 = new a(0);b b1 = new b(0);
    如果想要不带参数的构造函数就要写成下面
    public class a
    {
    a()
    {

    }
    a(int i)
    {

    }

    }
    public class b extends a
    {
    b()
    {
    super();
    } public b(int i) {
    super(i);
    }

    }
      

  7.   

    同意fp_zacard(自由指针) ( ) 信誉:100    Blog
      

  8.   

    有类不是object的子类吗?当你能够用new产生一个新对象时就调用构造函数了...
      

  9.   

    "所以当不是从Object继承的子类是不会有默认构造函数的",它所要表达的意思就是要跟你说,所有的类都是从Object继承而来的,就是所有的类都有这个构造器.我们把class比做一个制造对象的工厂,每个工厂都构造器这种机器(构造器就是构造方法),当我们要生产对象了,也就是用new这个动作开始制造对象,构造器就开始工作了,结束时,对象就诞生了(也就是一个实体).当然最古老的工厂(Object)只有一种构造器(没有参数的机器),为了能产生各种不同的对象,很多人又办了很多工厂(就是java中各种的类class),他们的工厂中有各种各样的构造器,当然也有一台机器是最古老的时候继承下来的,所以就可以产生出各种不同的工厂类的不同的对象.
      

  10.   

    看深入jvm去吧 很详细 我看不董