【Java-13】抽象類、介面、回撥
阿新 • • 發佈:2019-01-06
抽象類、介面目的是設計與實現分離,是繼承與重寫的應用,父類只作為一個模板,然後生成每一個子類,每一個子類中要對父類中所有方法都重寫。抽象類、介面是多型的深化,都是為了統一處理子類!
回撥其實就是多型、抽象類、介面的應用,所謂回撥是指一段程式中有一個未定執行語句,這個語句可以是任意一個子類中任意函式、屬性,通常這一段程式是封裝到一個函式裡的,所以這個函式引數我們可以定義為父類型別,同多型一樣執行
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 */