黑马程序员技术交流社区
标题:
默认构造函数的一个小疑惑
[打印本页]
作者:
blackstones1
时间:
2014-7-3 20:33
标题:
默认构造函数的一个小疑惑
当创建了一个类 没有定义构造函数时 系统会自动默认给这个类加入一个空参数构造函数
class Abc
{
//Abc(){}
}
视频上说是为了方便该类的初始化,要是没有的话,对象就建立不出来。
是不是说如果系统没加Abc(){} 就不能 Abc a = new Abc();
想问下 这是为什么 新手 求大婶指点
作者:
⋛⋌⋚JEEP
时间:
2014-7-3 20:43
本帖最后由 ⋛⋌⋚JEEP 于 2014-7-3 20:46 编辑
如果在该类中系统不默认创建一个空参数的构造函数,你的确是不能实现该类的实例(建立对象)。你可以用在该类定义一个非空参数的构造函数,如Abc(int a){this.a=a;} ;主函数里调用 Abc a = new Abc();编译一定报错的。因为你在该类中建立独立非空参数的构造函数,所以系统不会默认帮你建立空参数的构造函数,你就无法建立这个对象,需要传入参数才可以。
由此可以证明,系统没加Abc(){} 就不能 Abc a = new Abc();{:3_57:}
作者:
blackstones1
时间:
2014-7-3 20:51
这是jvm的规则还是说有什么原理。话说 、两个类即没有继承关系又没有实现关系,一个类中为什么可以创建另一个类的对象············
作者:
cheye0207
时间:
2014-7-3 21:02
new对象必须符合某个构造函数类型。例如 类中只有ABC(int x)构造函数,就不能new ABC(String str).
同理,若类中没有空参构造函数,也不能new空参对象
作者:
我为你着迷
时间:
2014-7-3 21:25
这个我觉得其实没有什么为什么。当你创建Abc a = new Abc();一个对象的时候,那么在对象调用的时候,系统必须自动给你加一个空参数的构造函数你才可以进行对象调用,否则你什么事都干不聊。这是java语言的内部运行机制导致的,这个你不用纠结 亲
作者:
xp8812
时间:
2014-7-3 22:09
是不是说如果系统没加Abc(){} 就不能 Abc a = new Abc(); ---------------------是的,系统不加Abc(){} 的话,只能说明你自己创建了构造方法,对象还是可以用你自己创建的构造方法创建出来的
作者:
那片天空
时间:
2014-7-3 22:28
这个,如果自己加了系统就不给加了(包括带参数和无参数构造方法)
public class A {
public static void main(String[] args) {
B b=new B();//报错
}
}
class B {
public B(int sum) {
}
}
这种情况下是会报错的;
作者:
⋛⋌⋚JEEP
时间:
2014-7-9 10:00
blackstones1 发表于 2014-7-3 20:51
这是jvm的规则还是说有什么原理。话说 、两个类即没有继承关系又没有实现关系,一个类中为什么可以创建另一 ...
创建一个类的对象,是看该类中的构造函数的,跟它的神马继承和实现关系没关系,只要构造函数不是私有的就好。
作者:
晴儿
时间:
2014-7-9 12:13
构造函数对类进行初始化。
作者:
導ぷ仙″兲蕐
时间:
2014-7-9 12:28
java语言硬性规定吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2