1.應用場景/目的
應用介面程式設計開發出易擴充套件, 易維護的程式.
2.學習/實踐
環境程式語言: php
2.1 介紹
介面,是類的模板,類又是物件的模板。介面裡面只需要定義需要實現的方法,但是所定義的方法都必須是空方法[沒有方法主體實現],即方法不做具體實現。
簡單說: 介面就類似於產品說明書[聽著很熟悉],不需要了解內部實現,只需要知道怎麼就好。[實際上實現是必然的,不然功能誰來做,只不過不是介面來做,而是由別人來做[實現介面的類來做]]
手冊:程式設計方式分類:
面向過程程式設計 / 物件導向程式設計[oop] /面向介面程式設計
code:
<?php
inte***ce person
public function sleep()
}class woman implements person
public function sleep()
}//模擬業務需要
//備註:類作為型別提示[也叫型別約束],介面也可以作為型別提示,而且被類更常用
class l
}//直接使用這種方法,呼叫介面中的方法,放心應用到**中即可,
$user = l::factory(new man);
// $user = l::factory(new woman); //直接應用women例項物件即可
// ...很多業務邏輯**
$user->eat();
//...很多業務邏輯**
$user->sleep();
介面的繼承: //介面也是可以繼承,但是介面是不能直接例項化的.
inte***ce ia
inte***ce ib
inte***ce ab extends ia,ib
//或者 不再使用介面ab ,而是直接使test 實現介面ia ib
class test implements ab //或者將ab 換成 ia,ib class test implements ia,ib 實際開發中也是常用這種方式
public function sleep()
$test = new test();
$test->eat();
$test->sleep();
echo ia::abc; //使用介面常量
現在業務邏輯變化,不再需要男人類,而是需要女人類,直接將引數變為women的例項物件即可,如上注釋處,而不需要動邏輯**,因為肯定有介面中的方法。
[這就要求我們在設計專案的時候,站在介面的高度進行設計,主要用在模組之間的程式設計,從而實現模組之間的松耦合]
擴充套件抽象類: 抽象類是特殊的介面,或者說介面是特殊的抽象類,區別在於,抽象類可以在類中有些方法可以有具體實現,即方法可以有主體部分 但是抽象類本質還是類,還是要用class 關鍵字,只是有點特殊,所以要加abstract進行標識,而且一定要有空方法的主體花括號
code
abstract class ab
public function eat(){}
public function sleep(){}
}class test extends ab
public function sleep()
}$test = new test();
$test->eat();
$test->sleep();
總結: 【請認真捋一下,物件與類,類與介面,介面與抽象類 [類與抽象類]的關係】
個人認為:
有時候,我們主要是先使用學會使用,理解性東西,在熟悉之後,可能也是自然而然的事情.
後續補充
3.問題/補充
tbd4.參考
後續補充
學習筆記 Linux C程式設計實踐
每天乙個linux命令 學習了 慕課網 linux c語言程式設計基本原理與實踐 簡短的記一下筆記 inlcude先搜尋include環境變數的路徑 inlcude file.h 先搜尋當前目錄 make工具可以把大型專案分成若干模組兒 gcc main.c o main main可以同時執行兩條命...
java併發程式設計實踐學習
1.futuretask有個簡單理解,但是例子不是非常懂,get 是返回結果,沒有結果的話阻塞,為什麼能處理耗時的計算操作呢?2.copyonwritearraylist究竟在什麼時候複製啊?2013 2 20 p294 清單14.3是什麼意思,先驗條件在 用到了 2013 2 21 p294 29...
Mybatis學習之介面程式設計
面向介面程式設計通常是程式設計的良好實踐,我們我在查詢執行sql中也可以轉換成面向介面程式設計方式。public employee getempbyid integer id 複製 getempbyid resulttype com.zhang.employee select id,last nam...