知识大全 内部类和上溯造型

Posted

篇首语:苟利国家生死以,岂因祸福避趋之。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 内部类和上溯造型相关的知识,希望对你有一定的参考价值。

  迄今为止 内部类看起来仍然没什么特别的地方 毕竟 用它实现隐藏显得有些大题小做 Java已经有一个非常优秀的隐藏机制——只允许类成为 友好的 (只在一个包内可见) 而不是把它创建成一个内部类     然而 当我们准备上溯造型到一个基础类(特别是到一个接口)的时候 内部类就开始发挥其关键作用(从用于实现的对象生成一个接口句柄具有与上溯造型至一个基础类相同的效果) 这是由于内部类随后可完全进入不可见或不可用状态——对任何人都将如此 所以我们可以非常方便地隐藏实施细节 我们得到的全部回报就是一个基础类或者接口的句柄 而且甚至有可能不知道准确的类型 就象下面这样     //: Parcel java  // Returning a handle to an inner class  package c parcel ;    abstract class Contents    abstract public int value();      interface Destination    String readLabel();      public class Parcel    private class PContents extends Contents     private int i = ;    public int value() return i;       protected class PDestination     implements Destination     private String label;    private PDestination(String whereTo)      label = whereTo;        public String readLabel() return label;       public Destination dest(String s)     return new PDestination(s);      public Contents cont()     return new PContents();          class Test    public static void main(String[] args)     Parcel p = new Parcel ();    Contents c = nt();    Destination d = p dest( Tanzania );    // Illegal can t access private class:    //! Parcel PContents c = p new PContents();      ///:~    现在 Contents和Destination代表可由客户程序员使用的接口(记住接口会将自己的所有成员都变成public属性) 为方便起见 它们置于单独一个文件里 但原始的Contents和Destination在它们自己的文件中是相互public的     在Parcel 中 一些新东西已经加入 内部类PContents被设为private 所以除了Parcel 之外 其他任何东西都不能访问它 PDestination被设为protected 所以除了Parcel Parcel 包内的类(因为protected也为包赋予了访问权 也就是说 protected也是 友好的 ) 以及Parcel 的继承者之外 其他任何东西都不能访问PDestination 这意味着客户程序员对这些成员的认识与访问将会受到限制 事实上 我们甚至不能下溯造型到一个private内部类(或者一个protected内部类 除非自己本身便是一个继承者) 因为我们不能访问名字 就象在classTest里看到的那样 所以 利用private内部类 类设计人员可完全禁止其他人依赖类型编码 并可将具体的实施细节完全隐藏起来 除此以外 从客户程序员的角度来看 一个接口的范围没有意义的 因为他们不能访问不属于公共接口类的任何额外方法 这样一来 Java编译器也有机会生成效率更高的代码     普通(非内部)类不可设为private或protected——只允许public或者 友好的     注意Contents不必成为一个抽象类 在这儿也可以使用一个普通类 但这种设计最典型的起点依然是一个 接口 cha138/Article/program/Java/hx/201311/26501

相关参考

知识大全 何谓“上溯造型”

  之所以叫作这个名字除了有一定的历史原因外也是由于在传统意义上类继承图的画法是根位于最顶部再逐渐向下扩展(当然可根据自己的习惯用任何方法描绘这种图)因素Windjava的继承图就象下面这个样子  >

知识大全 java的内部类和匿名类剖析

   Java通过对Java语言规范进行修改显著简化了一些实用结构的实现在那些修改中最引人注目的就是内部类和匿名类如运用得当它们可使程序更易理解和维护本文介绍内部类和匿名

知识大全 引用 造型 protected和private的困惑

  或许大家java的多态问题对上溯下溯造型有了一定的概念对protected和private大家想必也很清楚但是这几个个结合在一起往往令人产生很多困惑在这里我举一个例子大家或许会发觉这篇文章对你来说

在企业环境创新中,注重通过内部环境的改变,使企业符合环境要求的是

在企业环境创新中,注重通过内部环境的改变,使企业符合环境要求的是_____。A、被动适应型B、主动适应性C、互动融合性D、主动改造型答案:A解析:企业环境创新有被动适应型、互动融合型、主动改造型模式。

知识大全 三年以来、三十年以来、由此上溯到一千八百四十年,这三个历史事件分别对当时的中国产生了怎样的影响

三年以来、三十年以来、由此上溯到一千八百四十年,这三个历史事件分别对当时的中国产生了怎样的影响?人民英雄纪念碑的碑文。由毛泽东起草,周恩来书写三年以来,在人民解放战争和人民革命中,也就是1946到19

高杆灯的标准是什么?

高杆灯一般指15米以上钢制柱型灯杆和大功率组合式灯架构成的新型照明装置。它由灯头、内部灯具电气、杆体及基础部分组成。灯头造型可根据用户要求、周围环境、照明需要具体而定;内部灯具多由泛光灯和投光灯组成,

高杆灯的标准是什么?

高杆灯一般指15米以上钢制柱型灯杆和大功率组合式灯架构成的新型照明装置。它由灯头、内部灯具电气、杆体及基础部分组成。灯头造型可根据用户要求、周围环境、照明需要具体而定;内部灯具多由泛光灯和投光灯组成,

怎样挑选沙发、单椅呢?

1、沙发和单椅要有反差沙发和单椅的材质和造型要有对比和反差,才能制造更好的视觉效果。2、注意沙发内部的细节挑选沙发应注意泡棉的等级、独立筒的耐用程度、是否含有甲醛及甲苯。3、量好尺寸再购买购买沙发前一

知识大全 JavaFX 深入浅出(五)类和对象

JavaFX深入浅出(五)类和对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一类的定义  

知识大全 Java抽象类和接口的比较

Java抽象类和接口的比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &