分享
 
 
 

《Java编程思想》(第二版)第08章:接口与内隐类

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

我的笔记

Interfaces&inner classes为你的系统中的对象提供更为精巧的组织与控制方式.

interface更胜于abstract class,因为我们能够藉以撰写出"可以upcasting为多个base class"的class,从而达到C++多重继续的目的.

你可以在要害字interface之前加上要害字public(但只有当这个interface被定义与同名文件中才行),否则就成为"friendly",仅可被使用于同一个package之内.interface之内的所有methods都会被默认为public.由于interface不带任何实现细目,也就是说interface不与任何存储空间有关联,因此合并多个interface是一件轻而易举的工作,编译器不需如临大敌.所以在合并多个接口时,C++所面临的问题不会出现于Java之中.显然我们应该尽量考虑使用interface而不是abstract class.

产生常量群(grouping constants)由于interface中的所有数据成员都会自动成为static和final,所以对于常量群的产生(就如C或C++中的enum一样),interface是个十分便利的工具.interface中的数据成员会自动成为public,所以无需明白标出.

接口合并时的名称冲突(name collision)问题:当你实现多重接口是,可能会掉进一个小小的陷阱.overriding ,implementation,overloading统统令人不愉快的混砸在一起.而且重载method无法仅靠return type作为区别.所以此时你要非凡小心。

嵌套的(nesting) interfaces:除了实现private interface这个东东,真的还有用吗?书上说:"或许加入这些特性的最初理由只是为了语法上的一致性,但我总认为,你知道语言的某个特性之后,往往能够找到这个特性的用处。"

Inner Classes(内隐类)从设计上来说:inner class的主要目的不应是隐藏,因为Java已经具备了极佳的隐藏机制-friendly class。但是当你开始upcasting至base class 尤其是转型为interface时,就能突显inner class的好处:(tip:从某个"实现出interface I"的inner class对象身上产生一个reference 指向I,本质上和"向上转型至base class"是一样的),这是因为inner class(也就是I的实现者)可以在接下来的情境中完全不被看见,而且不为任何人所用。这么一来我们就可以很方便的"隐藏实现细目"。你所得到的只是"指向base class或interface"的一个reference而已。注重这里Inner Classes可以具有一般的(non-inner) class无法具有的性质:比如可以拥有private 和protected访问修饰符。当申明为private时,表示仅供outer class访问,当申明为protected时,表示可以被package内的任何class或者outer class的继续者所使用。

位于methods和scopes之内的inner classes怕怕~,上面提到的是inner class最正常的用法,假如你需要,他还提供了一些隐晦的使用方法:你可以将inner classes至于函数之内或甚至至于任意程序范畴(scopes)之内...你真的需要嘛?晕倒。

匿名(anonymous) inner classes time time again,i ask you :真的需要吗?多写点代码会死啊!

与外围(outer) class的连接关系inner class还有一个显然的好处就是他可以访问外围对象的所有成员而无需添加任何修饰词。此外inner classes亦能访问enclosing class的所有元素(这点与C++大不相同)。这是因为任何inner class被产生的

时候,必须给它记录一个reference,指向enclosing class的某个特定对象(比如说outer class),假如编译器找不到这个ref,就等着报错把。

static inner classes(静态内隐类)和上面的inner class相反,假如你不需要这个ref,那就static之吧!这意味着:1.产生其对象时,并不需要同时存在一个enclosing class对象.2.你无法在static inner class对象中访问enclosing class对象成员实际上,从另一个角度来看,还存在第3点不同:3.可以拥有static data,static fields,static inner class.然而non-static inner class不行.由此我们可以发现static inner class 和static method相似了.4.可以把static inner class 放在interface里面--static inner class只不过是被置于interface的命名空间中罢了,利用这个性质,可以把main()放到某个接口中,用以支持测试...

取用(referring) outer class 的对象[outer class name].this.xxx假如你想在outer class里面的static函数里面直接产生inner class对象,需要先搞定一个outer class的ref p,然后p.new [inner class name].因为我们说过inner class产生的时候必须要有一个outer class ref传过来,否则会被认为错误.当然对于static inner class 就不用了.

从多层嵌套class向外伸展触角无论inner class被嵌套的层次有多深.其所有outer classes的成员都可被它访问(考虑NameSpace).

继续inner classes:先吐血3升,真的有必要吗?难点在于那个神秘的ref必须被初始化.但derived class之内不存有可连接的缺省对象.所以需要专用语法支持:enclosingClassReference.super();

inner classes 可被复写吗?总算不用研究了:作者已经说明了,记住结果就可以:"其实没有什么用处."

inner class 标志符 (identifiers) : $

总结:为什么需要inner classes?1.由inner class实现interface能提供outer class实现interface所不具备的功能:你可以下探实现细目.inner class不受限于outer class是否已继续自某一实现类.也就是说,inner classes实习上由于你继续多个non-interface.2.Closures(终结)和Callbacks(回调)3.Control frameworks

我的问题

文中提到的把含有main()的static inner class 放到interface中用于测试较之以前的继续main()有何优点?

文中提到的把含有main()的static inner class 放到interface中用于测试较之以前的继续main()有何优点?

文中提到的把含有main()的static inner class 放到interface中用于测试较之以前的继续main()有何优点?

原来protected>=friendly?我土了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有