黑马程序员技术交流社区

标题: 构造方法的作用 [打印本页]

作者: 罗雪梅    时间: 2012-9-30 11:36
标题: 构造方法的作用
本帖最后由 罗雪梅 于 2012-9-30 17:06 编辑

构造方法能被private修饰吗?
构造方法除了创建对象时候用来初始化以外,还有什么作用呢,接口和抽象类都有构造方法吧,他们的构造方法是给子类创建对象时候用的,但好像也有没有构造方法的类,什么情况下的类就可以没有构造方法呢?

作者: 陈冲    时间: 2012-9-30 12:10
构造方法可以被private修饰,这时,需要使用单例设计模式,因为外部无法创建含有该构造函数的类的对象;
构造方法可以重载;
接口中没有构造方法,因为接口中不能有实现的方法;
抽象类有构造方法,可以被子类调用;
没有构造方法的类,并不是真的没有;其实是有一个无参的构造方法的,用于创建对象,只是没有显式表示出来。
作者: 尤洋    时间: 2012-9-30 12:17
抽象类中有构造函数
而接口中是没有的。


作者: 刘学    时间: 2012-9-30 12:24
构造方法能被private修饰,当构造方法被private修饰时,此方法成为私有的了,不能在类的外部创建对象。只能够在类的内部创建。构造方法用来初始化以外还用来new 对象,当创建对象时new 的后面就是构造方法。
接口没有构造方法,抽象类有。 接口是完全抽象的,既不能创建对象,也用不着初始化,而抽象类的子类创建对象时,先初始化父类,因为抽象类有一部分可能不是抽象的.

作者: 李润根    时间: 2012-9-30 12:39
不是没有构造方法,只是被private修饰了

如果你需要保证对象的唯一性,可以将构造方法私有化,然后提供一个静态方法获取该的对象

class Person
{
    private Person()
    {}

    private final static Person p = new Person();

    public static Person getInstance()
    {
        return p;
    }
}
作者: 李铁    时间: 2012-9-30 12:40
构造方法是可以private的,抽象类有构造方法。
而接口是没有构造方法的,因为接口里只有常量和抽象方法。
类都有一个默认的无参的构造方法。
作者: 黑马-王燚    时间: 2012-9-30 12:49
先回答第一个:构造方法当然能被private了,但是你要记住的是,private只是权限修饰符,你若将一个构造方法private了,那么代表一个问题 你不想让其他类来生成该对象。(你学到后面的单例设计模式就知道了)
第二个:构造方法就是用来创建对象初始化的,这就是规定,就像数组就是来存放同一种数据类型是一样的道理
第三个:更正你一个错误, 抽象类有构造方法,  但是接口没有。(所以接口不是类,只是像类)  
再反问你一个问题  一个类 没有构造方法,你写它的目的是干什么,看来你是对这些概念很不清楚。  
如果非要说一个类没有构造方法,那我想也只能是Object (我理解成上帝类,创建了其他类),其实道理很简单啊,就跟先有蛋还是先有鸡 一个道理.
作者: 罗雪梅    时间: 2012-9-30 17:06
尤洋 发表于 2012-9-30 12:17
抽象类中有构造函数
而接口中是没有的。

奥,是接口是不要构造的,记错了谢谢




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