一、介面 (實現多型的第三種方法,前面兩種是:1. 虛方法;2抽象類)當類需要多繼承的時候,使用介面代替多繼承
介面就是一種規範或一種能力 ----繼承了這種介面後擁有這種規範或這種能力
1、語法:
[public] inte***ce 介面名 ------介面名命名規則: i.....able 表示接受某種能力
void fly(); //介面中不能包含字段
string test(); // 介面成員不允許定義(沒有方法體)
2、介面特徵:
1、介面中不能包含欄位和建構函式
2、介面成員不允許定義(沒有方法體)
3、介面中的成員不能加訪問修飾符,預設是public; 類中的成員預設是private
4、介面可以有:方法、自動屬性(沒有方法體)、索引器、事件,這三個本質上也就是方法,所以可以說介面只有方法
5、介面的子類必須實現所繼承介面的所有成員,否則報錯
6、為了多型,介面不能被例項化!也就是說介面不能new(建立物件)
7、介面之間可以繼承,並且可以多繼承(類不允許)
8、子類同時繼承父類和介面的時候,父類必須在介面之前
介面是c#最重要的乙個多型
物件導向程式設計,大多說的就是面向介面程式設計!
介面在實現多型過程中,類似於父類的用法
3、顯示實現介面
顯示實現介面是了解決方法的重名問題
三種多型實現方式已經學習完畢,回顧比較一下:
什麼時候用虛方法
什麼時候用抽象類
什麼時候用介面
能找到父類,但是需要實現多型的方法不能確定怎麼寫 ----用抽象類
能找到父類,需要實現多型的方法可以寫 -----用虛方法
不能找到共同父類,或擁有某種相同能力 ----用介面
二、超市收銀系統之商品類
2、在分別寫子類,和子類初始化構造方法
3、倉庫類
1)儲存貨物:所有貨物集合list
list> list = new list>;
list代表貨架 ,所有貨物用貨架集合組成,貨架又由貨物組成
待
2)提貨 :待
3)進貨 :待
4、超市類 :待
三、md5加密
1、定義個專門取得md5的方法
public static string ge***5(string str)
引數是要加密的字串,返回值是加密好的字串
2、開始實現此方法的方法體
md5是抽象類,不能建立物件,但是有乙個create方法模擬例項化
md5 md5 = md5.create();
3、需要把引數轉成位元組陣列,才能作為引數給物件md5使用
byte buffer = encoding.default.getbytes(str);
4、使用物件md5的方法,完成轉換
byte md5buffer = md5.computehash(buffer);
將需要加密的字串的位元組陣列,代入轉換,返回加密後的位元組陣列
5、將加密後的位元組陣列轉回字串
將位元組陣列轉換成字串有三種方法:位元組陣列 ---- 字串
1)、解碼(按編碼同樣的格式):將位元組陣列中的每個元素按照指定的編碼格式解析成字串
string str = encoding.default.getstring(buffer);
編碼格式基本包括:default、 utf8、 getencoding("gbk")
2)、直接將陣列tostring()----結果是命名空間
3)、將位元組陣列中的每乙個元素tostring()
第一種和第二種都不行,選用第三種
string result = "";裡面的引數是輸出格式的型別for(int i = 0;i
x ----> 輸出16進製制的字串
c-----> 輸出帶錢符號的字串
x2 ---->補齊0位的 16進製制字串 (作用:對齊位數)
學習Python 第十三天
二叉樹 一,名詞 根邊 樹葉 葉子 沒有兒子 兄弟 具有相同父親的節點 祖父和孫子 路徑路徑的長 深度 從根到該點 高 從該點到葉子 祖先 後裔 真祖先 真後裔 二,樹的實現 class treenode def init self,data,firstchild,nextsibling self....
Java學習第十三天
13.01 常見物件 stringbuffer類的概述 b stringbuffer和string的區別 13.02 常見物件 stringbuffer類的構造方法 b stringbuffer的方法 c 案例演示 13.03 常見物件 stringbuffer的新增功能 public string...
Linux 第十三天學習
一 服務程式apache ilnux系統的配置檔案 服務目錄 etc httpd 主配置檔案 etc httpd conf httpd.conf 資料目錄 var www html 訪問日誌 var log httpd access log 錯誤日誌 var log httpd error log ...