1. 程式人生 > >#隨筆之java匿名內部類

#隨筆之java匿名內部類

比較 很好 個人 技術 希望 兩個 ava public 類方法

隨筆之java匿名內部類

從今天起開始每日一篇技術博客,當然這只是我當天所學的一些隨筆,裏面或多或少會有理解不當的地方,希望大家多多指教,一起進步!

在講匿名內部類之前,先講講內部類的一些概念。

1.內部類:顧名思義,內部類就是寫在一個類裏面的類(廢話),這裏大家可能會問了,為什麽我們不直接寫一個class呢,非要寫在內部。原因很簡單,內部類一方面是有很好的封裝性,要通過外部類對象才能訪問(具體實例見下方代碼)。另一方便定義起來很方便。最後,內部類還可以騷氣地實現多重繼承,因為外部類是否繼承或實現一個抽象類或接口對內部類毫無影響,內部類依然可以去繼承,這樣是一種變相的多繼承。接下來我們看一下內部類的一個實例

/**
  @author lw
  */
public class InnerClassTest {
        class InnerClass
        {
            //public InnerClass(){}
            public void B()
            {
                System.out.println("這是內部類方法");
            }
        }
    public static void main(String args[])
    {
        InnerClassTest i=new InnerClassTest();
        i.new InnerClass().B();
    }
}

從這個程序可以看到,我們在實例化內部類時,需要借助外部類的對象,否則會報錯。但如果類改為static,就可以直接調用。

內部類除了可以直接定義在類中,還可以定義在類的方法中,但需註意的是該類只能在本方法中實例化。

好了,講了那麽多廢話,開始進入正題,匿名內部類!有沒有很開心??==
首先還是從概念說起,匿名內部類的兩個特征,一是匿名,而是內部類(哈哈哈又是廢話)。
我們通過一個實際的例子來理解這個東西。

TestInterface接口

/**
 * @author lw *  */
public interface TestInterface {
    public void print();
}

InnerClassTest.class(和內部類名字一樣,偷了個懶)

`

/**
 * @author lw
  */
public class InnerClassTest {
    public static void main(String args[])
    {
        TestInterface test=new TestInterface()//new一個接口很奇怪。。。
        {
            public void print()
            {
                System.out.println("匿名內部類");
            }
        };  
        test.print();
    }
}

這裏我們可以看到,匿名內部類的好處主要在於簡化代碼,用專業一點的話來說就是寫得比較優雅,如果不用匿名內部類的話我們要實現該接口需要新建一個class,然後實現,但可以想象,如果這個類我們只用一次呢?這樣的新建class是不是完全沒有必要,用匿名類的方法就可以直接簡潔地實現了。我們需要註意的是匿名內部類一定要對應一個父類或者接口,然後在裏面實現其需要的方法,額雖然在寫的時候new一個接口很奇怪。。。同時我們要明確的是匿名內部類只能用一次,不能在外部復用,所以對於多次使用的類不能用該方法。以上都是個人理解,如有不對望指正~晚安!

#隨筆之java匿名內部類