仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1528|回复: 19
打印 上一主题 下一主题

[学习教程] 了解下JAVA的java外部类能够掩盖吗

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:36:21 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
若创立一个外部类,然后从封装类承继,偏重新界说外部类,那末会呈现甚么情形呢?也就是说,我们有大概掩盖一个外部类吗?这看起来仿佛是一个十分有效的观点,但“掩盖”一个外部类——好象它是内部类的另外一个办法——这一观点实践不克不及做任何事变:
  1. //:BigEgg.java
  2. //Aninnerclasscannotbeoverriden
  3. //likeamethod
  4. classEgg{
  5. protectedclassYolk{
  6. publicYolk(){
  7. System.out.println("Egg.Yolk()");
  8. }
  9. }
  10. privateYolky;
  11. publicEgg(){
  12. System.out.println("NewEgg()");
  13. y=newYolk();
  14. }
  15. }
  16. publicclassBigEggextendsEgg{
  17. publicclassYolk{
  18. publicYolk(){
  19. System.out.println("BigEgg.Yolk()");
  20. }
  21. }
  22. publicstaticvoidmain(String[]args){
  23. newBigEgg();
  24. }
  25. }///:~
复制代码
默许构建器是由编译器主动分解的,并且会挪用基本类的默许构建器。人人也许会以为因为筹办创立一个BigEgg,以是会利用Yolk的“被掩盖”版本。但实践情形并不是云云。输入以下:
NewEgg()
Egg.Yolk()
这个例子复杂地展现出当我们从内部类承继的时分,没有任何分外的外部类持续下往。但是,仍旧有大概“明白”地从外部类承继:
  1. //:BigEgg2.java
  2. //Properinheritanceofaninnerclass
  3. classEgg2{
  4. protectedclassYolk{
  5. publicYolk(){
  6. System.out.println("Egg2.Yolk()");
  7. }
  8. publicvoidf(){
  9. System.out.println("Egg2.Yolk.f()");
  10. }
  11. }
  12. privateYolky=newYolk();
  13. publicEgg2(){
  14. System.out.println("NewEgg2()");
  15. }
  16. publicvoidinsertYolk(Yolkyy){y=yy;}
  17. publicvoidg(){y.f();}
  18. }
  19. publicclassBigEgg2extendsEgg2{
  20. publicclassYolkextendsEgg2.Yolk{
  21. publicYolk(){
  22. System.out.println("BigEgg2.Yolk()");
  23. }
  24. publicvoidf(){
  25. System.out.println("BigEgg2.Yolk.f()");
  26. }
  27. }
  28. publicBigEgg2(){insertYolk(newYolk());}
  29. publicstaticvoidmain(String[]args){
  30. Egg2e2=newBigEgg2();
  31. e2.g();
  32. }
  33. }///:~
复制代码
如今,BigEgg2.Yolk明白地扩大了Egg2.Yolk,并且掩盖了它的办法。办法insertYolk()同意BigEgg2将它本人的某个Yolk对象上溯外型至Egg2的y句柄。以是当g()挪用y.f()的时分,就会利用f()被掩盖版本。输入了局以下:
Egg2.Yolk()
NewEgg2()
Egg2.Yolk()
BigEgg2.Yolk()
BigEgg2.Yolk.f()
对Egg2.Yolk()的第二个挪用是BigEgg2.Yolk构建器的基本类构建器挪用。挪用
g()的时分,可发明利用的是f()的被掩盖版本。
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
莫相离 该用户已被删除
沙发
 楼主| 发表于 2015-3-21 15:40:56 | 显示全部楼层
是一种使用者不需花费很多时间学习的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-22 11:01

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表