---------------------- "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 定義 就是說子類擁有父類的成員...