 |
c#中的interface abstract與virtual學(xué)習(xí) |
 |
1.只提供一些方法規(guī)約,不提供方法主體 如 public interface IPerson { void getName();//不包含方法主體 } 2.方法不能用public abstract等修飾,無字段變量,無構(gòu)造函數(shù)。 3.方法可包含參數(shù) 如 public interface IPerson { void getAge(string s); }
一個例子(例1): public interface IPerson { IPerson(); //錯誤 string name; //錯誤 public void getIDcard();//錯誤
void getName(); //right void getAge(string s); //right }
實(shí)現(xiàn)interface的類 1.與繼承類的格式一致,如 public class Chinese:IPerson{} 2.必須實(shí)現(xiàn)interface中的各個方法
例2,繼承例1 public class Chinese:IPerson { public Chinese(){} //添加構(gòu)造 public void getName(){} //實(shí)現(xiàn)getName() public void getAge(string s){} //實(shí)現(xiàn)getAge() }
abstract聲明抽象類、抽象方法 1.抽象方法所在類必須為抽象類 2.抽象類不能直接實(shí)例化,必須由其派生類實(shí)現(xiàn)。 3.抽象方法不包含方法主體,必須由派生類以override方式實(shí)現(xiàn)此方法,這點(diǎn)跟interface中的方法類似
如 public abstract class Book { public Book() { }
public abstract void getPrice(); //抽象方法,不含主體 public virtual void getName() //虛方法,可覆蓋 { Console.WriteLine("this is a test:virtual getName()"); } public virtual void getContent() //虛方法,可覆蓋 { Console.WriteLine("this is a test:virtual getContent()"); } public void getDate() //一般方法,若在派生類中重寫,須使用new關(guān)鍵字 { Console.WriteLine("this is a test: void getDate()"); } }
public class JavaBook:Book { public override void getPrice() //實(shí)現(xiàn)抽象方法,必須實(shí)現(xiàn) { Console.WriteLine("this is a test:JavaBook override abstract getPrice()"); } public override void getName() //覆蓋原方法,不是必須的 { Console.WriteLine("this is a test:JavaBook override virtual getName()"); } }
測試如下: public class test { public test() { JavaBook jbook=new JavaBook(); jbook.getPrice(); //將調(diào)用JavaBook中g(shù)etPrice() jbook.getName(); //將調(diào)用JavaBook中g(shù)etName() jbook.getContent(); //將調(diào)用Book中g(shù)etContent() jbook.getDate(); //將調(diào)用Book中g(shù)etDate() } public static void Main() {test t=new test(); } }
virtual標(biāo)記方法為虛方法 1.可在派生類中以override覆蓋此方法 2.不覆蓋也可由對象調(diào)用 3.無此標(biāo)記的方法(也無其他標(biāo)記),重寫時需用new隱藏原方法
abstract與virtual: 方法重寫時都使用 override 關(guān)鍵字 interface中的方法和abstract方法都要求實(shí)現(xiàn)
|
作者:未知 | 文章來源:未知 | 更新時間:2007-12-18 14:20:19
|
|
 |
 |
最新文章 |
|
|
 |