java-面向对象(基础篇)--构造方法私有化及对象数组

java-面向对象(基础篇)--构造方法私有化及对象数组

ID:20439726

大小:52.05 KB

页数:5页

时间:2018-10-12

java-面向对象(基础篇)--构造方法私有化及对象数组_第1页
java-面向对象(基础篇)--构造方法私有化及对象数组_第2页
java-面向对象(基础篇)--构造方法私有化及对象数组_第3页
java-面向对象(基础篇)--构造方法私有化及对象数组_第4页
java-面向对象(基础篇)--构造方法私有化及对象数组_第5页
资源描述:

《java-面向对象(基础篇)--构造方法私有化及对象数组》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、构造方法私有化及对象数组一.构造方法私有化1.W题的引出类的封装性不只体现迕对属性的封装上,实际上方法也是可以进行封装的,当然,在方法封装屮也包括了对构造方法的封装。例:classSingleton{privateSingleton(){}publicvoidprint(){System.out.println("HelloWorld!");}}从之前的讲解巾可以清楚的知道,一个类想使用,则必须要有实例化的对象,现在要想调用Singleton炎中的printO方法则一定要首先产生Singleton的实例化对象,但是由于此时构造方法被私有化了,所以如果按照如下的程序编写,则

2、肯定会出现错误。【错误代码,直接实例化Singleton类对象】publicclassSingletonDemo02{publicstaticvoidmain(String[]args){Singletonsl=null;sl=newSingleton();si.print));}}程序运行的结果为:SingletonDemo02.java:13:错误:Singleton()可以在Singleton中访问privatesl=newSingleton();1个错误从上述错误提示屮可以发现,程序是在使川new关键字实例化对象吋出现了错误,而对于声明对象则没有任何的错误,那么该

3、如何解释那?封裝足指一切外部不可见牲,那么就意味着在外部根木无法调用被封裝的构造方法,既然外部不能调用,那么在内部码?【在内部产生Singleton的对象】classSingleton{staticSingletoninstance=newSingleton();privateSingleton(){}publicvoidprint(){System.out.println("HelloWorld!");}}以上的程序编译后,不会出现任何错误,对以正常的完成instance对象的实例化,即此时的问题在于如何将內部的instance对象传递到类的外部,这样外部就可以通过in

4、stance來实例化其他的Singleton的对象。那么对象到底该如何取?1.问题的解决在前面讲解static关键字时齊经讲过,static类型的属性可以山类名称直接调用,所以此吋可以将instance属性声明为static笑型,这样就町以通过笑名称直接调川。【将instance声明为static类型】classSingleton{staticSingletoninstance=newSingleton();privateSingleton(){}publicvoidprint(){System.out.println("HelloWorld!");}}publiccla

5、ssSingletonDemo04{publicstaticvoidmain(String[]args){Singletonsl=null;sl=Singleton.instance;si.print));}}运行结果为:HelloWorld!山运行结果可以发现,程序成功地取得了Singleton的实例化对象并调用了phnt()方法。但是这样做本身也存在着问题,因为类中的属性必须封装,所以此处应该将instance属性进行封装,而封装后必须通过方法取得,但是因为instance屈性屈于静态属性,所以此处必须声明-•个静态方法,这样就可以被类名称直接调用。【使用静态方法,取

6、得Singleton类的实例】classSingleton{privatestaticSingletoninstance=newSingleton();privateSingleton(){}publicstaticSingletongetlnstance(){returninstance;}publicvoidprint(){System.out.println(nHelloWorld!}}publicclassSingletonDemo05{publicstaticvoidmain(String[]args){Singletonsl=Singleton.getlnst

7、ance();Singletons2=Singleton.getlnstance();Singletons3=Singleton.getlnstance();si.print));s2.print();s3.print));}}运行结果为:HelloWorld!HelloWorld!HelloWorld!1.租序的意义在以上的程序中可以发现虽然声叨了3个对象,但是实际上所有的对象都只使用一个instance引用,也就是说,此时不管外而如何使用,最终结果程序屮也只柯一个Singleton类的实例化对象存在,在设计模式中称为单例模

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。