当前位置:七道奇文章资讯编程技术Java编程
日期: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成员内部,除自己之外的其他全部人都无法成立属于那个类的一个对象(注释⑤).以下例所示:

//: 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();
  }
} ///:~
④:实际上,Java 1.1内部类既可以是“遭到保护的”,也可以是“私有的”,但那属于分外情形.第7章会具体注释这个问题.

⑤:亦可通过从那个类担当来实现.

迄今为止,我们成立过的大大都办法都是要末返回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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .