Java私有的构造函数的作用_Java 私有构造函数的应用

在Java中,构造函数的访问级别通常是public, 它提供了一个构造该类对象的接口。可是你知不知道,把构造函数的级别设为private, 有一些特别用处。

先来看一段代码:

//Shape.java

public class Shape {

private Shape() {

/* set something here */

}

public static Shape makeShape(/* arglist */) {

System.out.println("here is the shape you ordered");

return (new Shape());

}

public static void main(String args[]) {

Shape.makeShape();

}

}

首先从语言角度分析,我们可以知道, 任何类的使用者都无法使用构造函数来生成一个图形, 因为构造函数是私有的,无法被类以外的函数使用。而只能通过调用makeShape来实现。

也许你会问,为什么不直接使用构造函数来生成图形,而需要使用一个看上去多余的makeShape方法呢?

这样做有以下几个好处:

1。你可以返回任何的Shape类型,包括Shape的子类。比如你可以把makeShape写成这样:

public static Shape makeShape(/* arglist */) {

System.out.println("here is the shape you ordered");

if (retangle)

return (new Retangle(/* arglist*/));

if (Circle)

return (new Circle(/* arglist */));

/* you can return as many shapes as you like */

}

这里假设Retangle 和 Circle 都是shape的子类,并且和Shape类在同一个包�,Shape类可以访问子类的构造函数。这样shape就提供了一个图形工厂。 用户通过一个接口就可以生成不同的图形。事实上,这种用法被称为“工厂模式”。

2。可以实现一个类只有一个对象。请看下面的代码

//Handler.java

public class Handler {

private Handler handler = null;

private Handler() {

/* set something here */

}

public static getHandler(/* arglist */) {

if (!handler)

handler = new Handler();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值