黑馬程式設計師 物件導向基礎(二)

2021-06-19 02:28:59 字數 3191 閱讀 8437

---------------------- "target="blank">asp.net+android+ios開發、"target="blank">.net培訓、期待與您交流! ----------------------

介面:一、介面的概念

介面就是乙個只包含抽象成員的一種特殊的類,值定義成員的介面規格,而成員的實現是在繼承了介面的類中,由派生類根據自身需求,來實現介面的成員內容。

二、運用介面的好處

其實c#

語法中,任何語法都有其作用,例如,前面的類的繼承,為了大型程式省去了不少麻煩,提高了其可維護性,多型性的功能真的是很強大,然而任何事物都有兩面性,有利就有弊,在類的繼承中,隨著繼承的關係結構愈來愈複雜,基類的修改對派生類有不同程度的影響,從而降低了程式的擴充彈性,在這種情況下,使用介面可以解決由繼承所帶來的問題。

三、介面的特點

1.可以在類中同時繼承多個介面,介面只定義規格,不提供具體的實現,所有介面都是在多繼承的類中實現。

2.我們既可以在外部通過例項化派生類,引用實現成員方法,也可以將派生類的例項轉換為介面型別,這時需要用到as

關鍵字。

3.介面就如同類,也可以通過繼承方式來擴充。這時,需要注意的是,實現介面的類,一定也要實現其繼承關係中的所有成員。

4.指定實現介面---

如果同時繼承兩個或多個介面,兩個或多個介面中都有同乙個方法,那麼,為了區別開來,要帶上介面名

.方法名,同時,要把類轉換成專屬的介面型別,然後通過介面型別來呼叫該方法。同時不用加訪問修飾符。

5.在介面中可以定義屬性,如同方法成員。

例如:用類中實現了介面的屬性來傳值。

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace _01

inte***ce

inte***ce1

string str 

void method();

class

myclass : inte***ce1

private

string s;

public

string str

get 

set 

public myclass(string str)

this.s = str;

public

void method()

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace _01

class

program

static

void main(string args)

string str1;

myclass my1 = new

myclass("hello !c#");

str1 = my1.str;

console.writeline(str1);

myclass my = new

myclass("hello ! c#world!");

str1 = my.str;

console.writeline(str1 );                    

console.readkey();            

乙個類同時繼承了兩個介面,每個介面裡都有method

()方法,需要把類轉成介面來呼叫類裡面的方法:

在同介面名.

型別的時候,不用加訪問修飾符

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace _02

inte***ce

inte***ce1

void method();

inte***ce

inte***ce2

void method();

class

forexample:inte***ce1 ,inte***ce2

public

void method()

console.writeline("forexample自己的method()方法");

void

inte***ce1.method()

console.writeline("第乙個介面的method()方法");

void

inte***ce2.method()

console.writeline("第二個介面的method()方法");

using system;

using system.collections.generic;

using system.linq;

using system.text; 

namespace _02

class

program

///

///乙個簡單的介面實現的例子

//////static

void main(string args)

forexample forexample1 = new

forexample();

forexample1.method();            

inte***ce1 inte***ce1 = forexample1 as

inte***ce1;

if (forexample1 is

inte***ce1)

inte***ce1.method();

inte***ce2 inte***ce2 = forexample1 as

inte***ce2;

if (inte***ce2 is

inte***ce2)

inte***ce2.method();

console.readkey();

---------------------- "target="blank">asp.net+android+ios開發、"target="blank">.net培訓、期待與您交流! ----------------------

黑馬程式設計師 物件導向

物件導向 1 物件導向 是基於面向過程的一種思想。面向過程 以函式為基礎,關注實現過程。物件導向 以物件為基礎,關注實現結果。2 物件導向的思想特點 a 是一種更符合人們思考習慣的思想。b 把複雜的事情簡單化了。c 把我們從執行者變成了指揮者。舉例 買電腦。洗衣,做飯。旅遊。把大象裝進冰箱。體現 c...

黑馬程式設計師 物件導向

物件導向是一種思想,把複雜事物簡單化,把面向過程的執行者變成了指揮者。過程其實就是函式,而物件將函式和一些內容封裝。把事物的屬性和行為封裝成物件,再把物件抽象成類。類的訪問修飾符有public和final。而成員的修飾符有public private protected static 成員變數和區域...

黑馬程式設計師 物件導向 學習(二)

一,塊 1 區域性 塊,寫在區域性方法中 2 構造 塊,寫在類中,優先於構造方法執行,屬於物件,可以進行物件呼叫 3 靜態 塊,寫在類中,屬於類,可以進行類名呼叫 演示 class codedemo 靜態 塊 static 優先執行 只執行一次 僅僅一次 二,繼承 1 定義 就是說子類擁有父類的成員...