1. 程式人生 > >java巢狀類和內部類、匿名類

java巢狀類和內部類、匿名類

4、匿名內部類

abstract class Person {

    public abstract void showCareer();
}

public class Teacher extends Person{
    @Override
    public void showCareer() {
        System.out.println("Career is Teacher");
    }
}

public interface Tree {
    void showTreeName();
}


public class AnonymousInnerClass {

    public static void main(String[] args) {
        System.out.println("################# 常規");
        normal();
        System.out.println("################# 覆蓋父類方法");
        extendsInner();
        System.out.println("################# 抽象類");
        abstractInner();
        System.out.println("################# 介面");
        interfaceInner();
    }
    //覆蓋父類方法
    private static void extendsInner() {
        Person person = new Teacher() {
            @Override
            public void showCareer() {
                System.out.println("Career is Worker");
            }
        };
        person.showCareer();
    }

    //正常
    public static void normal() {
        Person person = new Teacher();
        person.showCareer();
    }

    //匿名內部類 抽象類 實現
    public static void abstractInner() {
        Person person = new Person() {
            @Override
            public void showCareer() {
                System.out.println("Career is lawyer");
            }
        };

        person.showCareer();
    }

    //匿名內部類 介面 實現
    public static void interfaceInner() {
        Tree tree = new Tree() {
            public void showTreeName() {
                System.out.println("This is Apple Tree");
            }
        };
        tree.showTreeName();
    }
}
執行結果: