java內部類的理解

eBusinessMan發表於2015-04-07

         之前一直體會不了java內部類的好處,現在通過一個小專案,在實現隊友的抽象類和介面時,終於覺得,java內部類真的是一個很周到的設計!!

舉例如下:

         我今天的工作內容是:建立一個類Boy  ,由於業務需要,它必須(1)要繼承隊友A的包中的類Person,(2)還要繼承隊友B的包中的父類Man 。

        

public class Person{

                 public void eat(){                                                                         

                          System.out.println(“我吃雞我吃雞我吃雞”);

                 }

                 public void run(){

                          System.out.println(“我跑跑跑”);

                 }

}


public class Man{//站著尿

         private int age;

         private boolean isChild(){

                  if(this.age <= 2){

                          return true;

                  }

                  return false;

         }

         public void standToNiao(){

                  if(isChild()){//standToNiao()內部需要isChild(),

                          System.out.println(“站著尿站著尿站著尿”);

                  }else{

                          System.out.println(“蹲著尿蹲著尿蹲著尿”);

                  }

         }

 }

 

業務需求是:我要建立一個Boy的類,它剛好需要繼承類Person的eat(),繼承類Man的standToNiao().可是問題來了,java中我怎麼可以多繼承??!!怎麼辦呢?!!

         我想了很久也想不出什麼方法來做到符合業務需求。無可奈何之時,正準備跟隊友說能不能修改一下Man成為介面,可是立馬遭到對方的狂噴----因為他負責的專案模組中很多類都是繼承了Man的,如果改Man的話,就都得改了,所以他頑強反抗!!我覺得如果這樣對他太殘忍了。

         就在此時,我翻了一下教科書,咋地一下映入眼簾的是內部類!!!內部類,就是類中的類,最重要的是這個類可以呼叫外部類的屬性和方法!!就這個特點,我覺得就為我的程式碼設計增添了很多可能性,以及為我在解決問題方面增添了多幾條思路!!於是,我嘗試著這樣設計:

class Boy extends Person{

         private int name;

         private class InBoy extends Man{}//內部類

         public void standToNiao(){

                  InBoy inBoy = new InBoy();

                  inBoy. standToNiao();

         }

}

 

後記:內部類的出現,在程式碼結構設計方面給了我們更多的選擇。其實java裡面的很多設計都不是說新增了什麼特性,而是為我們程式設計提供了更多的方案性的解決途徑。                                                                                                                                                    

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29900383/viewspace-1535161/,如需轉載,請註明出處,否則將追究法律責任。

相關文章