物件導向基本概念
一、封裝:
所以為了讓數據更安全及讓程式碼保持穩定,把數據放在class裡面,可以用不公開屏蔽
用白話的意思比較像是 你有顆充電器,
充電器可以用來充電,但裡面的構造你不必知道!
二、繼承:
上過生物課,應該都知道「界門綱目科屬種」,像是人,為哺乳類。
人有分為黃種人、白種人、黑人...等
所以以程式角度來看,白人 is a 人,黃種人 is a 人 ,黑人 is a 人,這就是繼承
用其他角度來看,手機也是。每支手機都叫手機,但有分"品牌"
像華為手機、小米手機、華碩手機、蘋果手機...等
手機都可以用來打電話,所以BasePhone為父類別,IPhone、小米就可以稱為子類別,繼承BasePhone
/// <summary>
/// 手機
/// </summary>
public class BasePhone
{
/// <summary>
/// 打電話
/// </summary>
public void Call();
}
/// <summary>
/// 愛瘋手機
/// </summary>
public class IPhone:BasePhone
{
}
/// <summary>
/// 華碩手機
/// </summary>
public class Asus:BasePhone
{
}
BasePhone iphone = new IPhone();
iphone.Call();
BasePhone asus = new Asus();
asus.Call();
以上例子,蘋果手機類別、華碩手機皆繼承手機父類別,即可調用裡面的方法。
三、多型:
抽象類:父類別
例如:蘋果手機是 手機,Asus也是 手機,所以Apple、Asus繼承手機,
由此可知手機是基底類別 (Parent);Apple、Asus 為(Child)
Apple、Asus可以打電話,可以發簡訊,
但系統是不一樣的,一個為IOS,一個為Android
所以打電話發簡訊放一塊(一樣),系統放一塊(不一樣)
那不一樣的部分就把它變成抽象方法要override他
public abstract class BasePhone
{
// 一方面子類都得有 一方慢又各不相同
public abstract void System();
public void Call(){
Console.WriteLine("打電話");
}
public void Send(){
Console.WriteLine("發簡訊");
}
}
public class IPhone: BasePhone{
public override void System(){
Console.WriteLine("系統為ios");
};
}
public class Asus:BasePhone{
public override void System(){
Console.WriteLine("系統為android");
};
}
另外一種簡單解釋:
老鷹和鴕鳥都是鳥,但老鷹會飛;鴕鳥不會;鴕鳥會跑:老鷹不會
他們都是鳥,繼承了鳥類的特徵行為,但是部分行為不同
行為不同可稱之為多型
多型 和 超載、覆寫相關
多載(OverLoad):
以坊間最喜歡提的方法多載為例
我們有同一種方法叫做Get,但參數有很多,這就是方法的多載
void Get();
void Get(int i);
void Get(char c);
void Get(String s, int i);
void Get(String s, String s2);
覆寫(OverRide):
假設父親和兒子都有一個"賺錢"這個方法
兒子一定要繼承家業嗎?不一定
所以他可以透過其他方式賺錢,都是賺錢,只是不同的方式實踐。
以上是我自身對物件導向概念看法~
內容可能稍微薄弱。若有問題或謬論請告知一下!謝謝
主要是做我的學習筆記
偶而心血來潮寫個幾篇~
若有問題~可以寫信或在下方留言~感謝