日期:2011-03-22 16:17:00 来源:本站整理
java的类访谒[Java编程]
本文“java的类访谒[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在Java中,亦可用拜候指导符判断出一个库内的哪些类可由那个库的用户利用.若想一个类能由客户程序员调用,可在类主体的起始花括号前面某处安排一个public关键字.它掌握着客户程序员能否可以成立属于这个类的一个对象.
为掌握一个类的拜候,指导符必须在关键字class之前呈现.所以我们可以利用:
public class Widget {
也就是说,假如我们的库名是mylib,那么全部客户程序员都能拜候Widget——通过下述语句:
import mylib.Widget;
大概
import mylib.*;
但是,我们同时还要注意到一些额外的限制:
(1) 每个编译单元(文件)都只能有一个public类.每个编译单元有一个大众接口的概念是由那个大众类表达出来的.按照自己的需求,它可拥有肆意多个供应支持的“友好”类.但假如在一个编译单元里利用了多个public类,编译器就会向我们提醒一条出错消息.
(2) public类的名字必须与包含了编译单元的那个文件的名字完好符合,乃至包含它的大小写情势.所以关于Widget来说,文件的名字必须是Widget.java,而不该是widget.java大概WIDGET.java.一样地,假如呈现不符,就会报告一个编译期错误.
(3) 大概(但并常见)有一个编译单元根本没有任何大众类.此时,可按自己的志愿肆意指定文件名.
假如已经得到了mylib内部的一个类,预备用它完成由Widget大概mylib内部的其他某些public类履行的任务,此时又会呈现什么情形呢?我们不但愿花吃力气为客户程序员编制文档,并感受今后某个时刻大概会举行大手笔的改正,并将自己的类一同删掉,换成另一个差别的类.为得到这种机动处理的本领,需求保证没有客户程序员可以依靠自己躲藏于mylib内部的特定实施细节.为到达这个目的,只需将public关键字从类中剔除便可,这样便把类变成了“友好的”(类仅能在包内利用).
注意不可将类设成private(那样会使除类之外的其他东西都不能拜候它),也不能设成protected(注释④).因此,我们目前关于类的拜候只有两个挑选:“友好的”大概public.若不肯其他任何人拜候那个类,可将全部构建器设为private.这样一来,在类的一个static成员内部,除自己之外的其他全部人都无法成立属于那个类的一个对象(注释⑤).以下例所示:
④:实际上,Java 1.1内部类既可以是“遭到保护的”,也可以是“私有的”,但那属于分外情形.第7章会具体注释这个问题.//: Lunch.java // Demonstrates class access specifiers. // Make a class effectively private // with private constructors: class Soup { private Soup() {} // (1) Allow creation via static method: public static Soup makeSoup() { return new Soup(); } // (2) Create a static object and // return a reference upon request. // (The "Singleton" pattern): private static Soup ps1 = new Soup(); public static Soup access() { return ps1; } public void f() {} } class Sandwich { // Uses Lunch void f() { new Lunch(); } } // Only one public class allowed per file: public class Lunch { void test() { // Can't do this! Private constructor: //! Soup priv1 = new Soup(); Soup priv2 = Soup.makeSoup(); Sandwich f1 = new Sandwich(); Soup.access().f(); } } ///:~
⑤:亦可通过从那个类担当来实现.
迄今为止,我们成立过的大大都办法都是要末返回void,要末返回一个基本数据范例.所以对下述定义来说:
public static Soup access() {
return psl;
}
它最开始多少会令人有些迷惑.位于办法名(access)前的单词指出办法到底返回什么.在这之前,我们看到的都是void,它意味着“什么也不返回”(void在英语里是“虚无”的意思.但亦可返回指向一个对象的句柄,此时呈现的就是这个情形.该办法返回一个句柄,它指向类Soup的一个对象.
Soup类向我们展示出若何通过将全部构建器都设为private,从而避免直接成立一个类.请记着,假如不明确地至少成立一个构建器,就会自动成立默许构建器(没有自变量).若自己编写默许构建器,它就不会自动成立.把它变成private后,就没人能为那个类成立一个对象.但别人怎样利用这个类呢?上面的例子为我们揭暴露了两个挑选.第一个挑选,我们可成立一个static办法,再通过它成立一个新的Soup,然后返回指向它的一个句柄.假如想在返回之前对Soup举行一些额外的操作,大概想理解预备成立多少个Soup对象(大概是为了限制它们的个数),这种筹划无疑是分外有效的.
第二个挑选是采取“计划筹划”(Design Pattern)技术,本书背面会对此举行具体介绍.普通筹划叫作“独子”,因为它仅答应成立一个对象.类Soup的对象被成立成Soup的一个static private成员,所以有一个并且只能有一个.除非通过public办法access(),不然根本无法拜候它.
正如早先指出的那样,假如不针对类的拜候设置一个拜候指导符,那么它会自动默许为“友好的”.这意味着那个类的对象可由包内的其他类成立,但不能由包外成立.请记着,关于相同目录内的全部文件,假如没有明确地举行package声明,那么它们都默许为那个目录的默许包的一部份.但是,假如那个类一个static成员的属性是public,那么客户程序员仍旧可以拜候那个static成员——即便它们不能成立属于那个类的一个对象.
以上是“java的类访谒[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:<b>java类学习总结</b>
- ·下一篇文章:<b>java中的接口与实现</b>
- ·中查找“java的类访谒”更多相关内容
- ·中查找“java的类访谒”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论