在開發中面對接口編程,有時需要將屬性放到接口中,但是在類中又要如何去繼承接口的屬性呢?
開始的時候,我以為只要繼承了接口,就可以將屬性拿來用了。代碼如下:
public interface IA
{
int count{get;set;}
void test();
}
public class A:IA
{
public void test()
{
//TODO...
}
}
public interface IA
{
int count{get;set;}
void test();
}
public class A:IA
{
public void test()
{
//TODO...
}
}
這時候,如何進行編譯,將會提示錯誤,見下圖。
看提示就應該知道,是IA中的屬性count沒有實現。因為屬性在本質上也是方法,即get和set方法,只是屬性看起來像是字段一樣。現在對count進行實現,代碼如下
public class A : IA
{
#region count normal Property
private int count_;
public int count
{
get
{
return count_;
}
set
{
count_ = value;
}
}
#endregion
public void test()
{
//TODO...
}
}
public class A : IA
{
#region count normal Property
private int count_;
public int count
{
get
{
return count_;
}
set
{
count_ = value;
}
}
#endregion
public void test()
{
//TODO...
}
這裡說一個小技巧:在類繼承接口時,可以在接口的後面按下CTRL+.,然後就可以快速實現接口中的各個項了(包括方法和屬性)。只是需要注意的是,對於方法和屬性都會有這樣的代碼“throw new NotImplementedException();”,這就需要對其進行實現。
對於這一技巧可以參見《提高開發效率的Visual Studio 2010使用技巧》
那是否可以在接口中去增加一個公共字段,讓繼承的也可以訪問呢?比如這樣寫:
ublic interface IA
{
public int sum;
int count { get; set; }
void test();
}
public interface IA
{
public int sum;
int count { get; set; }
void test();
}編譯報錯,見下圖
接口具有下列屬性:
接口與抽象基類。 實現接口的任何選件類或結構必須實現其所有成員的鏈接。
接口不能直接實例化。 其成員通過實現接口的任何選件類或結構實現。
接口可以包含事件、索引器、方法和屬性。
接口不包含方法的實現。
選件類或結構可以實現多個接口。 選件類可以繼承基類並實現一個或多個接口。