Java匿名內部類(通過繼承抽象類來實現)
阿新 • • 發佈:2018-12-26
3. 匿名內部類
沒有名字的內部類就是匿名內部類。
3.1 匿名內部類特性
1. 匿名內部類總是預設實現某個介面或繼承某個抽象類。
2.不能有構造方法,只能有一個例項。
3. 不能定義在任何靜態成員、靜態方法。
4. 不能是public.protected.private static.
5. 匿名內部類為區域性的,所以區域性內部類的所有限制都對其有效。
3.2 匿名內部類的使用方式
一、繼承式的匿名內部類: 就是new 抽象類。
示例:
package 匿名內部類抽象類練習; public abstract class Tv { //開啟電視 public abstract void open(); //關閉電視 public abstract void close(); //換臺 public abstract void turn(); }
package 匿名內部類抽象類練習; public class Summer { public static Tv extendsTv() { Tv tv = new Tv() { @Override public void open() { System.out.println("開啟三星電視..."); } @Override public void close() { System.out.println("關閉三星電視..."); } @Override public void turn() { System.out.println("對三星電視進行換臺..."); } }; //tv.open(); //tv.close(); //tv.turn(); return tv; } }
package 匿名內部類抽象類練習; public class XiaoMi { public static Tv extendsTv() { //匿名內部類... 抽象類的實現 ... Tv tv = new Tv() { @Override public void open() { System.out.println("開啟小米電視..."); } @Override public void close() { System.out.println("關閉小米電視..."); } @Override public void turn() { System.out.println("對小米電視進行換臺..."); } }; //tv.open(); //tv.close(); //tv.turn(); return tv; } }
package 匿名內部類抽象類練習;
public class Test {
public static void main(String[] args) {
Tv xiaomi = XiaoMi.extendsTv();
xiaomi.open();
xiaomi.turn();
xiaomi.close();
System.out.println("------------------------------");
Tv summer = Summer.extendsTv();
summer.open();
summer.turn();
summer.close();
}
}