|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
用java开发web只要两本书:一本是关于java基础的,一本是关于jsp、servlet的就可以了。开发周期长,我就来讲句题外话,现在有很多思想都是通过java来展现。
若创立一个外部类,然后从封装类承继,偏重新界说外部类,那末会呈现甚么情形呢?也就是说,我们有大概掩盖一个外部类吗?这看起来仿佛是一个十分有效的观点,但“掩盖”一个外部类——好象它是内部类的另外一个办法——这一观点实践不克不及做任何事变:- //:BigEgg.java
- //Aninnerclasscannotbeoverriden
- //likeamethod
- classEgg{
- protectedclassYolk{
- publicYolk(){
- System.out.println("Egg.Yolk()");
- }
- }
- privateYolky;
- publicEgg(){
- System.out.println("NewEgg()");
- y=newYolk();
- }
- }
- publicclassBigEggextendsEgg{
- publicclassYolk{
- publicYolk(){
- System.out.println("BigEgg.Yolk()");
- }
- }
- publicstaticvoidmain(String[]args){
- newBigEgg();
- }
- }///:~
复制代码
默许构建器是由编译器主动分解的,并且会挪用基本类的默许构建器。人人也许会以为因为筹办创立一个BigEgg,以是会利用Yolk的“被掩盖”版本。但实践情形并不是云云。输入以下:
NewEgg()
Egg.Yolk()
这个例子复杂地展现出当我们从内部类承继的时分,没有任何分外的外部类持续下往。但是,仍旧有大概“明白”地从外部类承继:- //:BigEgg2.java
- //Properinheritanceofaninnerclass
- classEgg2{
- protectedclassYolk{
- publicYolk(){
- System.out.println("Egg2.Yolk()");
- }
- publicvoidf(){
- System.out.println("Egg2.Yolk.f()");
- }
- }
- privateYolky=newYolk();
- publicEgg2(){
- System.out.println("NewEgg2()");
- }
- publicvoidinsertYolk(Yolkyy){y=yy;}
- publicvoidg(){y.f();}
- }
- publicclassBigEgg2extendsEgg2{
- publicclassYolkextendsEgg2.Yolk{
- publicYolk(){
- System.out.println("BigEgg2.Yolk()");
- }
- publicvoidf(){
- System.out.println("BigEgg2.Yolk.f()");
- }
- }
- publicBigEgg2(){insertYolk(newYolk());}
- publicstaticvoidmain(String[]args){
- Egg2e2=newBigEgg2();
- e2.g();
- }
- }///:~
复制代码
如今,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#不一定都能做到。毕竟是抄袭吗。 |
|