1. 程式人生 > 其它 >抽象類 & 介面

抽象類 & 介面

1 概述

用關鍵詞 abstract 修飾的方法為抽象方法,修飾的類為抽象類。

特點

  • 抽象類,不能使用 new 關鍵詞來建立物件。--->抽象類是用來讓子類繼承的
  • 抽象方法,只有方法的宣告,沒有方法的實現。--->交給子類實現

PS:

  1. 抽象類中可以沒有抽象方法,但是有抽象方法的類一定要宣告為抽象類
  2. 子類繼承抽象類,就必須要實現抽象類中沒有實現的抽象方法,否則該子類也要宣告為抽象類。

2 例項

抽象類 Action

package com.oop;

//abstract 抽象類 ,類只能單繼承  (介面可以多繼承)
public abstract class Action {

    //約束,由繼承這個類的類 進行實現
    //abstract,抽象方法,只有方法名,沒有方法實現
    public abstract void doSomething();

    //1.不能 new 這個抽象類,只能靠子類去實現它
    //2.抽象類中可以寫普通方法
    //3.抽象方法必須在抽象類中

}

繼承了抽象類的類 A

package com.oop;

//繼承了抽象類,必須實現其為實現的方法、 除非本類也宣告為抽象類
public class A extends Action {

    @Override
    public void doSomething() {

    }
}

3 介面

普通類:只有具體實現

抽象類:具體實現和規範(抽象方法)都有!

介面:只有規範!自己無法寫方法~專業的約束! 約束和實現分離:面向介面變成

PS:面向物件的精髓,就是對 物件的抽象,最能體現這一點的就是介面。設計模式,實際上就是如何合理的去抽象。

例項

package com.oop;

//介面都需要有實現類
public interface UserService {
    //介面中的所有定義其實都是抽象的 public abstract

    void add(String name);
    void delete(String name);
    void update(String name);
    void query(String name);
}
package com.oop;

public interface TimeService {
    void timer();
}

PS:介面中定義的屬性都是常量(一般不會在介面中定義屬性)

4 總結

  1. 介面是一個約束,可以定義一些方法,讓別人實現。
  2. 介面中的方法都是 抽象方法
  3. 介面中的屬性都是常量
  4. 介面不能被例項化,介面中沒有構造方法
  5. implements 可以實現多個介面
  6. 子類必須要重寫介面中的方法