程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中的匿名外部類具體總結

java中的匿名外部類具體總結

編輯:關於JAVA

java中的匿名外部類具體總結。本站提示廣大學習愛好者:(java中的匿名外部類具體總結)文章只能為提供參考,不一定能成為您想要的結果。以下是java中的匿名外部類具體總結正文


匿名外部類也就是沒著名字的外部類

正由於沒著名字,所以匿名外部類只能應用一次,它平日用來簡化代碼編寫

但應用匿名外部類還有個條件前提:必需繼續一個父類或完成一個接口

實例1:不應用匿名外部類來完成籠統辦法

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

class Child extends Person {
    public void eat() {
        System.out.println("eat something");
    }
}

public class Demo {
    public static void main(String[] args) {
        Person p = new Child();
        p.eat();
    }
}

運轉成果:eat something

可以看到,我們用Child繼續了Person類,然後完成了Child的一個實例,將其向上轉型為Person類的援用

然則,假如此處的Child類只應用一次,那末將其編寫為自力的一個類豈不是很費事?

這個時刻就引入了匿名外部類

實例2:匿名外部類的根本完成

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

public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

運轉成果:eat something

可以看到,我們直接將籠統類Person中的辦法在年夜括號中完成了

如許即可以省略一個類的書寫

而且,匿名外部類還能用於接口上

實例3:在接口上應用匿名外部類

interface Person {
    public void eat();
}

public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

運轉成果:eat something
由下面的例子可以看出,只需一個類是籠統的或是一個接口,那末其子類中的辦法都可使用匿名外部類來完成

最經常使用的情形就是在多線程的完成上,由於要完成多線程必需繼續Thread類或是繼續Runnable接口

實例4:Thread類的匿名外部類完成

public class Demo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}

運轉成果:1 2 3 4 5

實例5:Runnable接口的匿名外部類完成

public class Demo {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        Thread t = new Thread(r);
        t.start();
    }
}

運轉成果:1 2 3 4 5

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved