日期:2011-03-22 16:17:00 来源:本站整理
内部类和上溯造型[Java编程]
本文“内部类和上溯造型[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
迄今为止,内部类看起来仍旧没什么分外的地方.毕竟,用它实现躲藏显得有些大题小做.Java已经有一个非常优异的躲藏机制——只答应类成为“友好的”(只在一个包内可见),而不是把它成立成一个内部类.
但是,当我们预备上溯造型到一个底子类(分外是到一个接口)的时刻,内部类就开始施展其关键作用(从用于实现的对象生成一个接口句柄具有与上溯造型至一个底子类相同的效果).这是由于内部类随后可完好进入不可见或不可用状况——对任何人都将如此.所以我们可以非常便利地躲藏实施细节.我们得到的全部回报就是一个底子类大概接口的句柄,并且乃至有大概不知道精确的范例.就象下面这样:
目前,Contents和Destination代表可由客户程序员利用的接口(记着接口会将自己的全部成员都变成public属性).为便利起见,它们置于单独一个文件里,但原始的Contents和Destination在它们自己的文件中是彼此public的.//: Parcel3.java // Returning a handle to an inner class package c07.parcel3; abstract class Contents { abstract public int value(); } interface Destination { String readLabel(); } public class Parcel3 { private class PContents extends Contents { private int i = 11; 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) { Parcel3 p = new Parcel3(); Contents c = p.cont(); Destination d = p.dest("Tanzania"); // Illegal -- can't access private class: //! Parcel3.PContents c = p.new PContents(); } } ///:~
在Parcel3中,一些新东西已经加入:内部类PContents被设为private,所以除了Parcel3之外,其他任何东西都不能拜候它.PDestination被设为protected,所以除了Parcel3,Parcel3包内的类(因为protected也为包赋予了拜候权;也就是说,protected也是“友好的”),以及Parcel3的担当者之外,其他任何东西都不能拜候PDestination.这意味着客户程序员对这些成员的熟习与拜候将会遭到限制.事实上,我们乃至不能下溯造型到一个private内部类(大概一个protected内部类,除非自己本身就是一个担当者),因为我们不能拜候名字,就象在classTest里看到的那样.所以,操纵private内部类,类计划人员可完好禁止其他人依靠范例编码,并可将具体的实施细节完好躲藏起来.除此以外,从客户程序员的角度来看,一个接口的范围没有意义的,因为他们不能拜候不属于大众接口类的任何额外办法.这样一来,Java编译器也有机会生成效率更高的代码.
普通(非内部)类不可设为private或protected——只答应public大概“友好的”.
注意Contents没必要成为一个抽象类.在这儿也可以利用一个普通类,但这种计划最典型的起点仍然是一个“接口”.
以上是“内部类和上溯造型[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:<b>java的匿名内部类</b>
- ·下一篇文章:<b>java中的内部类</b>
- ·中查找“内部类和上溯造型”更多相关内容
- ·中查找“内部类和上溯造型”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论