抽象類 & 介面
阿新 • • 發佈:2022-04-09
1 概述
用關鍵詞 abstract 修飾的方法為抽象方法,修飾的類為抽象類。
特點
- 抽象類,不能使用 new 關鍵詞來建立物件。--->抽象類是用來讓子類繼承的
- 抽象方法,只有方法的宣告,沒有方法的實現。--->交給子類實現
PS:
- 抽象類中可以沒有抽象方法,但是有抽象方法的類一定要宣告為抽象類
- 子類繼承抽象類,就必須要實現抽象類中沒有實現的抽象方法,否則該子類也要宣告為抽象類。
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 總結
- 介面是一個約束,可以定義一些方法,讓別人實現。
- 介面中的方法都是 抽象方法
- 介面中的屬性都是常量
- 介面不能被例項化,介面中沒有構造方法
- implements 可以實現多個介面
- 子類必須要重寫介面中的方法