java匿名內部類舉例


public class Test {
    public static void main(String[] args) {
        //4.匿名內部類
        //主要是針對那些不能直接創建對象的抽象類和接口而來的
        Student stu=new Student();
        System.out.println(stu.getClass());//class com.aowin.noname.Student
        //4.1.通過實體類創建匿名內部類對象
        //相當於創建該類的一個子類對象
        Person p=new Person(){
            public void eat(){
                System.out.println("吃八元套餐");
            }
        };
        p.eat();
        System.out.println(p.getClass());//class com.aowin.noname.Test$1//系統自動為子類命名Test$1
        
        Dog dog=new Dog();
        dog.bark();
        //4.2.通過抽象類創建匿名內部類對象
        //相當於定義了該抽象類的一個子類對象,並重寫了抽象類中所有的抽象方法
        Animal an=new Animal(){
            public void bark(){
                System.out.println("汪汪汪...");
            }
        };
        an.bark();
        //返回的是包名加類名
        System.out.println(an.getClass());//class com.aowin.noname.Test$2
        
        //4.3.通過接口創建匿名內部類對象
        //相當於定義了該接口的一個實現類對象,並重寫了接口中所有的抽象方法
        Sportable s=new Sportable(){
            public void sport(){
                System.out.println("打籃球");
            }
        };
        s.sport();
        System.out.println(s.getClass());//class com.aowin.noname.Test$3
        
    }
}
//實體類
class Person{
    public void eat(){
        System.out.println("吃飯");
    }
}
class Student extends Person{
    public void eat(){
        System.out.println("吃八元套餐");
    }
}
//抽象類
abstract class Animal{
    public abstract void bark();
}
class Dog extends Animal{
    public void bark() {
        System.out.println("汪汪...");
    }
}
//接口
interface Sportable{
    public abstract void sport();
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM