1. 程式人生 > >java匿名內部類舉例

java匿名內部類舉例

對象 類對象 port str ble 系統 table .get 打籃球

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();
}

java匿名內部類舉例