黑马程序员技术交流社区

标题: 类中构造函数 [打印本页]

作者: 天方地圆    时间: 2014-3-10 17:08
标题: 类中构造函数
本帖最后由 天方地圆 于 2014-3-11 23:07 编辑

当一个类没有构造函数时,为什么不能直接创建对象?

作者: 房建斌    时间: 2014-3-10 17:12
默认有一个的,构造函数就是用来做初始化工作的。如果没了初始化函数,就无法完成初始化工作了。至于没有构造函数,能不能创建对象,就不清楚了。
作者: 目标    时间: 2014-3-10 17:29
类中有个默认构造函数,只不过是隐式的。当你没有自定义构造函数时程序会自动访问隐式构造函数对对象进行初始化,如果你自己添加了构造函数就可以通过你指定的构造函数初始化。
作者: 欧阳疯    时间: 2014-3-10 17:47
因为一个对象要被创建出来,就必须调用构造函数,如果类里面没有显式定义构造函数,就会调用默认构造函数,否则该对象不能被构造出来
作者: duanyoujiji    时间: 2014-3-10 18:09
构造函数就是为了创建类的对象,即使你不写,也会默认有一个空的没有参数的构造函数的。你可以在构造函数里面做一些给自己的属性赋值,对象初始化之类的事情。打个比方说,如果父类有带参数的构造函数,你不定义构造函数的话就没有办法调用父类的构造函数,这样你就不能继承那个父类。
  1. class Parent{
  2.     private String name;
  3.     public Parent(String name){
  4.     this.name = name;
  5.   }
  6. }
复制代码

你要定义一个类继承这个类,就必须要再你自己的类的构造函数第一句话调用super(xxx),不然程序就是错的。
如果你不在构造函数里面给自己的属性赋值,那么程序就会变得很繁琐,每个属性都要调用一个set方法去设置,这样会很繁琐。
作者: SyouRai_Tsk    时间: 2014-3-11 07:44
类执行时默认会有一个无参的构造函数被调用.
作者: olivia    时间: 2014-3-11 10:03
.构造函数的功能主要用于在类的对象创建时定义初始化的状态。
作者: pifuhanshu    时间: 2014-3-11 19:56
      类中的构造函数是为了new对象,一般类中有一个默认构造函数,这个默认构造函数是不向新建的构造函数传递参数的。若是想new一个带参数的对象还必须自定义一个带参数的构造函数。                       class Person
            {   
                     Person(name,age)
                     {
                            this.name=name;
                            this.age=age;
                      }
            }
            class  Demo
            {
                    Person p=new Person("xiaoqiang",23);
            }
       当要new创建子类对象时,如果父类调用的是默认构造方法时子类对象在子类构造方法时,首句应为super();如果父类重新定义了构造方法时,子类构造方法的首句应为super(name,age);  例如:
           class Person
           {
                    private String name;
                     private int  age;
                     Person(String name,int age)
                     {
                            this.name=name;
                            this.age=age;
                      }
           }
           class  Zi  extends   Person
        {
                Zi(String name,int age)
                {
                        super(name,age);
                }
         }






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2