黑马程序员技术交流社区
标题:
关于java源码中的构造方法问题
[打印本页]
作者:
何拴绪
时间:
2012-6-2 22:23
标题:
关于java源码中的构造方法问题
看到有些类定义了有参数的构造方法,为什么还要定义没有参数的构造方法?
作者:
杨海波
时间:
2012-6-2 22:24
1,在很多时候我不能得到类的源文件,但是我们可以得到.class文件这样有了那个空参数构造函数就可以通过Class.newInstance方法来实例对象。
例如:
String obj = (String)Class.forName(“Java.lang.String”).newInstance();
复制代码
2,子类继承父类的时候会自动继承父类的默认构造函数(也就是继承那个无参数的构造函数)。
而你的类里面已经有一个带有参数的构造函数了,如果你没有写那个默认的不带参数的构造函数的话,
继承的时候子类就会报错,因为系统不知道要不继承哪个构造函数,必须明确的使用super()关键字来描述。
所以我们一般为了避免这种错误的发生,在有带有多个构造函数的类里面都会写一个不带参数的构造函数。
希望能帮到你
作者:
杜俊彪
时间:
2012-6-2 22:49
这么说吧,每个类都有构造方法,即使你不给出构造方法,系统也会提供默认的构造方法,一般是不带参数的构造方法,因为类是对象的模板,类就是用构造方法来创建对象的。
默认的构造方法是无参数的,但是如果你已经在类里定义了一个或多个构造方法,那么JAVA就不会提供默认的构造方法了。你还用不带参数的语句想用默认的构造方法创建对象的话,那就是非法语句。(除非你自己定义了一个不带参数的构造方法)构造方法可以重载,所以你可以有多个构造方法。而且你至少有一个构造方法(在你不定义的时候,系统默认给出的一个)
作者:
黑马11期李项京
时间:
2012-6-2 22:56
从下面一段代码可以回答你的问题
当父类是有参数的构造函数,而且未定义无参构造函数,而子类定义了无参构造函数时
class Fu{
Fu(String name){
}
}
class Zi extends Fu{
private int i;
Zi(){//报错未定义父类无参构造函数
i = 1;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2