匿名內部類的使用

SunDC-YY發表於2020-10-27

匿名內部類的使用

首先先搞定什麼事匿名內部類
顧名思義,匿名內部類就是省去命名的類

上程式碼

    public static void main(String[] args)
    {
        new fulei()
        {
            void test2()
            {
                System.out.println("內部類2");
            }
        }.test2();//此處是test1的話結果是內部類1,是test2的話結果是內部類2
}

class fulei
{
    void test1()
    {
        System.out.println("內部類1");
    }
}

省去了類的命名

但是在工作中如何使用

上程式碼

/*
 * 匿名內部類的使用方法:當需要對父類的方法進行復寫時所用的,特點是內部類的方法儘可能少,一般就是隻有一個
 * 弊端:如果想多次呼叫的話就得重複的寫匿名內部類。
 * 格式:new 父類(){方法體}.方法名字
 * 作用:簡單容易寫,不用再給子類起名字了,所謂匿名,就是匿名建立了一個子類物件。
 */
public class Neibulei {

    public static void main(String[] args)
    {
        PersonDemo pd = new PersonDemo ();
        pd.method(new Student(){
            public void show() {
                System.out.println("show-1");
            }
        });

        pd.method(new Person() {//匿名內部類在開發中當做引數傳遞
            public void show() {
                System.out.println("show");
            }
        });
    }

}
class fulei
{
    void test1()
    {
        System.out.println("內部類1");
    }
}


abstract class Person {
    public abstract void show();
}


class PersonDemo {
    public void method(Person p) {//Person p = new Student();		//父類引用指向子類物件
        p.show();
    }
}

class Student extends Person {
    public void show() {
        System.out.println("students show");
    }
}

理解容易,但是在工作中使用,還要分析具體情況,但是匿名內部類的使用會讓程式碼顯得冗餘,可以使用java8新特性lamda表示式來寫。但是會造成程式碼晦澀難懂 且不規範。

相關文章