1. 程式人生 > 實用技巧 >面向物件16:介面的定義與實現

面向物件16:介面的定義與實現

//抽象類不能new,通過子類來操作

//介面就好比是契約,規定好的往裡寫

//介面不能被例項化~ 介面中沒有構造方法~

//可以實現多個介面,必須要 重寫 介面中的方法
介面:

宣告類的關鍵字是class,宣告介面的是關鍵字是interface

  • 普通類:只有具體實現
  • 抽象類:具體實現和規範(抽象方法)都有!
  • 介面:只有規範!自己無法寫方法~,專業的約束!約束和實現分離:面向介面程式設計
  • 介面就是規範,定義的是一組規則,體現了現實世界中“如果你是…則必須能…"的思想。如果你是天使,則必須能飛。如果你是汽車。則必須能跑。如果你是好人,則必須幹掉壞人;如果你是壞人,則必須欺負好人。
  • 介面的本質是契約
    ,就像我們人間的法律一樣。制定好後大家都遵守。
  • OO的精髓,是對物件的抽象,最能體現這一點的就是介面。為什麼我們討論設計模式都只針對具備了抽象能力的語言(比如C++、Java,C#等),就是因為設計模式所研究的,實際上就是如何合理的去抽象。
作用:
作用:
1.約束
2.定義一些方法,讓不同的人實現
3.方法:抽象方法,public abstract
4.屬性:常量 public static final
5.介面不能被例項化~ 介面中沒有構造方法~
6.可以實現多個介面
7.必須要重寫介面中的方法
IDEA圖示的顯示:

1.正常的類 是一個藍色的圓圈帶上C

2.抽象類 是C兩邊有豎線

3.介面 是I

程式碼示例:
UserService.java介面:
package com.oop.Demo09;

public interface UserService {

    //常量~ public static final
    int AGE = 99;

    //介面中的所有定義方法都是抽象的 public abstract
    void run(String name);

    void delete(String name);

    void update(String name);

    void query(String name);
}

TimeService介面:
package com.oop.Demo09;

public interface TimeService {
    void abc(String name);
}

UserServiceLmpl重寫介面中的方法:
package com.oop.Demo09;

//抽象類:extends
//類 可以實現介面 implements  介面
//實現了介面的類 ,就需要重寫介面中的方法~
//多繼承~利用介面實現多繼承~
public class UserServiceLmpl implements UserService, TimeService {
    @Override
    public void run(String name) {

    }

    @Override
    public void delete(String name) {

    }

    @Override
    public void update(String name) {

    }

    @Override
    public void query(String name) {

    }

    @Override   //重寫      //timeService 的介面
    public void abc(String name) {

    }
}

note:
作用:
1.約束
2.定義一些方法,讓不同的人實現
3.方法:抽象方法, public abstract
4.屬性:常量 public static final
5.介面不能被例項化~ 介面中沒有構造方法~
6.可以實現多個介面
7.必須要重寫介面中的方法