1. 程式人生 > >【Java-13】抽象類、介面、回撥

【Java-13】抽象類、介面、回撥

抽象類、介面目的是設計與實現分離,是繼承與重寫的應用,父類只作為一個模板,然後生成每一個子類,每一個子類中要對父類中所有方法都重寫。抽象類、介面是多型的深化,都是為了統一處理子類!

回撥其實就是多型、抽象類、介面的應用,所謂回撥是指一段程式中有一個未定執行語句,這個語句可以是任意一個子類中任意函式、屬性,通常這一段程式是封裝到一個函式裡的,所以這個函式引數我們可以定義為父類型別,同多型一樣執行

interface A {
	public static final int i = 10;		//介面只能定義全域性常量需要加public static final如果不加系統預設給出,推薦加。
                                                
	public abstract void eat();
}
 
interface B extends A { 		// 介面可以繼承介面
	public abstract void sleep();
}
 
interface C {
	public abstract void look();
}
 
abstract class D {        //定義一個抽象類
	public void run() {
		System.out.println("跑起來");
	}
 
	public abstract void learn();
}
 
public class Text extends D implements B, C {		//一個子類可以繼承一個抽象類同時實現多個介面
	//子類如果不是抽象類就必須實現所有的抽象方法
	
	public void eat() {		//實現介面A中的抽象方法
		System.out.println("吃東西");
	}
 
	public void look() {		//實現介面C中的抽象方法
		System.out.println("看風景");
	}
 
	public void sleep() {		//實現介面B中的抽象方法
		System.out.println("睡懶覺");
	}
 
	@Override
	public void learn() {	//重寫抽象類D中的抽象方法
		System.out.println("學Java");
	}
 
	public static void main(String[] args) {
		B b=new Text();		//多型,介面的引用指向子類的物件
		b.eat();
		b.sleep();
		System.out.println(B.i);    //靜態常量通過介面名去訪問,不推薦用物件去呼叫
                C c=new Text();
		c.look();
		D d=new Text();	
		d.learn();
		
	}
}
/**
 * 輸出為:
吃東西
睡懶覺
10
看風景
學Java
 */