1. 程式人生 > 其它 >Java基礎-匿名內部類(4)

Java基礎-匿名內部類(4)

package com.hspedu.anonymousInnerclass_;

public class Course415 {
    public static void main(String[] args) {
        // 匿名內部類(重要)
        // (1)是一個類(2)內部類(3)沒有名字,系統有分配隱藏的(4)同時是一個物件

        /*
         *  1、語法:
         *      new 類/介面(引數列表) {
         *          ...
         *      }
         * */
        Outer04 outer04 
= new Outer04(); outer04.method(); } } class Outer04 { private int n1 = 10; public void method() { // 基於介面的匿名內部類 // 需求:使用IA介面,並建立物件 1.傳統方法,如果tiger/dog只使用一次 // Tiger tiger = new Tiger(); // tiger.cry(); Dog dog = new Dog(); dog.cry();
// 2.匿名內部類方法 /* * tiger的編譯型別是IA,tiger的執行型別是匿名內部類, * 底層是一個類實現了IA介面,class XXX implements IA {...} * 這個匿名內部類的名字是 外部類名+$1 ,也就是Outer04$1 * jdk底層建立了匿名內部類,Outer04$1,同時建立了例項 * 匿名內部類使用一次就不能再使用了(沒辦法再new這個物件了),這個物件還可以使用 * */ IA tiger = new IA() { @Override
public void cry() { System.out.println("tiger cry"); System.out.println(); } }; System.out.println("tiger的執行型別:" + tiger.getClass()); // getClass獲取物件的執行型別 tiger.cry(); } } interface IA { public void cry(); } class Tiger implements IA { @Override public void cry() { System.out.println("tiger cry.."); } } class Dog implements IA { @Override public void cry() { System.out.println("dog cry.."); } } class Father { public Father(String name) { } public void test() { } }