A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© blackstones1 中级黑马   /  2014-7-3 20:33  /  1658 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当创建了一个类 没有定义构造函数时 系统会自动默认给这个类加入一个空参数构造函数
class Abc
{
         //Abc(){}
}
视频上说是为了方便该类的初始化,要是没有的话,对象就建立不出来。
是不是说如果系统没加Abc(){}  就不能 Abc a = new Abc();
想问下 这是为什么      新手 求大婶指点

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

9 个回复

倒序浏览
本帖最后由 ⋛⋌⋚JEEP 于 2014-7-3 20:46 编辑

       如果在该类中系统不默认创建一个空参数的构造函数,你的确是不能实现该类的实例(建立对象)。你可以用在该类定义一个非空参数的构造函数,如Abc(int a){this.a=a;}  ;主函数里调用 Abc a = new Abc();编译一定报错的。因为你在该类中建立独立非空参数的构造函数,所以系统不会默认帮你建立空参数的构造函数,你就无法建立这个对象,需要传入参数才可以。
      由此可以证明,系统没加Abc(){}  就不能 Abc a = new Abc();{:3_57:}

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
这是jvm的规则还是说有什么原理。话说 、两个类即没有继承关系又没有实现关系,一个类中为什么可以创建另一个类的对象············
回复 使用道具 举报
new对象必须符合某个构造函数类型。例如 类中只有ABC(int x)构造函数,就不能new ABC(String str).
同理,若类中没有空参构造函数,也不能new空参对象
回复 使用道具 举报
这个我觉得其实没有什么为什么。当你创建Abc a = new Abc();一个对象的时候,那么在对象调用的时候,系统必须自动给你加一个空参数的构造函数你才可以进行对象调用,否则你什么事都干不聊。这是java语言的内部运行机制导致的,这个你不用纠结 亲
回复 使用道具 举报
是不是说如果系统没加Abc(){}  就不能 Abc a = new Abc(); ---------------------是的,系统不加Abc(){} 的话,只能说明你自己创建了构造方法,对象还是可以用你自己创建的构造方法创建出来的
回复 使用道具 举报
这个,如果自己加了系统就不给加了(包括带参数和无参数构造方法)

public class A {
public static void main(String[] args) {
       B b=new B();//报错
        }
}
class B {
   public B(int sum) {
  }
}

这种情况下是会报错的;
回复 使用道具 举报
blackstones1 发表于 2014-7-3 20:51
这是jvm的规则还是说有什么原理。话说 、两个类即没有继承关系又没有实现关系,一个类中为什么可以创建另一 ...

创建一个类的对象,是看该类中的构造函数的,跟它的神马继承和实现关系没关系,只要构造函数不是私有的就好。
回复 使用道具 举报
构造函数对类进行初始化。
回复 使用道具 举报
java语言硬性规定吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马