Java中构造方法私有化-->单态

在Java中类的封装不仅仅体现在对属性的 封装,对于方法同样是可以封装的,下面谈谈对构造方法的封装。

看段代码:

class Demo
{private Demo()//构造方法私有了
{}
public void print()
{System.out.println("Hello World!")}
};
public class RefDemo
{
public static void main(String agrs[])
{
Demo d1=new Demo();
d1.print();
}
};
以上代码在运行的时候,会提示出错的,原因对象无法实例化,因为实例化一个对象的时候必须调用构造函数,而此时构造方法被私有化,因此无法从类的外部,即主函数中调用。但是解决此问题的关键也在这里,封装对内可见,对外不可见,那么我们可以从类的内部着手解决这个问题。

class Demo
{
Demo d1=new Demo();//在类的内部实例化
private Demo()//构造方法私有了
{}
public void print()
{System.out.println("Hello World!")}
};
以上的代码,在类的内部实例化了对象,那么我们可以通过Demo的对象d1来实例化其他的Demo对象,那么怎么去把d1传递出去呢?

象想必大家还记static关键字,是用来声明一个全局变量或者是方法的,那么我们就将以上代码改为如下:

class Demo
{
static Demo d1=new Demo(); //将d1定义为static类型,可以直接用类名访问
private Demo()//构造方法私有了
{}
public void print()
{System.out.println("Hello World!")}
};
public class RefDemo
{
public static void main(String agrs[])
{
Demo d1=null;
d=Demo.d1;  //由于d1是static声明的,因此可以使用类名直接访问
d1.print();
}
};
这样我们就完成了对,私有构造方法,如何声明并实例化,并且拿到类外。但是,还有个问题就是单态!

从以上代码可以看出,有不合理之处,原因在于,类中的方法都是要求封装的,我们需要对d1进行封装,封装后外部又无法直接访问,因此需要定义一个方法,由于是对static属性访问因此,我们定义一个static方法,取得实例。


如此一来,声明的所有实例,其实,都是同一块对内存空间,这就是单态!

那么,单态有什么应用呢?

想想电脑中的回收站,其实整个电脑就一个回收站,但是,每个硬盘都有一个回收站,实际上大家指向的都是同一个回收站,只不过在形式上貌似有很多,这就是单态。


看似不同,其实相同。


多态呢?  看似相同,其实不同。下一次写关于 多态的!




 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值