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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗雪梅 中级黑马   /  2012-9-30 11:36  /  2048 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗雪梅 于 2012-9-30 17:06 编辑

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

7 个回复

倒序浏览
构造方法可以被private修饰,这时,需要使用单例设计模式,因为外部无法创建含有该构造函数的类的对象;
构造方法可以重载;
接口中没有构造方法,因为接口中不能有实现的方法;
抽象类有构造方法,可以被子类调用;
没有构造方法的类,并不是真的没有;其实是有一个无参的构造方法的,用于创建对象,只是没有显式表示出来。
回复 使用道具 举报
抽象类中有构造函数
而接口中是没有的。

回复 使用道具 举报
构造方法能被private修饰,当构造方法被private修饰时,此方法成为私有的了,不能在类的外部创建对象。只能够在类的内部创建。构造方法用来初始化以外还用来new 对象,当创建对象时new 的后面就是构造方法。
接口没有构造方法,抽象类有。 接口是完全抽象的,既不能创建对象,也用不着初始化,而抽象类的子类创建对象时,先初始化父类,因为抽象类有一部分可能不是抽象的.
回复 使用道具 举报
不是没有构造方法,只是被private修饰了

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

class Person
{
    private Person()
    {}

    private final static Person p = new Person();

    public static Person getInstance()
    {
        return p;
    }
}
回复 使用道具 举报
构造方法是可以private的,抽象类有构造方法。
而接口是没有构造方法的,因为接口里只有常量和抽象方法。
类都有一个默认的无参的构造方法。

评分

参与人数 1黑马币 +30 收起 理由
王海宇 + 30

查看全部评分

回复 使用道具 举报
先回答第一个:构造方法当然能被private了,但是你要记住的是,private只是权限修饰符,你若将一个构造方法private了,那么代表一个问题 你不想让其他类来生成该对象。(你学到后面的单例设计模式就知道了)
第二个:构造方法就是用来创建对象初始化的,这就是规定,就像数组就是来存放同一种数据类型是一样的道理
第三个:更正你一个错误, 抽象类有构造方法,  但是接口没有。(所以接口不是类,只是像类)  
再反问你一个问题  一个类 没有构造方法,你写它的目的是干什么,看来你是对这些概念很不清楚。  
如果非要说一个类没有构造方法,那我想也只能是Object (我理解成上帝类,创建了其他类),其实道理很简单啊,就跟先有蛋还是先有鸡 一个道理.
回复 使用道具 举报
尤洋 发表于 2012-9-30 12:17
抽象类中有构造函数
而接口中是没有的。

奥,是接口是不要构造的,记错了谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马