 |
c#中的interface abstract與virtual學習 |
 |
1.只提供一些方法規(guī)約,不提供方法主體 如 public interface IPerson { void getName();//不包含方法主體 } 2.方法不能用public abstract等修飾,無字段變量,無構造函數(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 }
實現(xiàn)interface的類 1.與繼承類的格式一致,如 public class Chinese:IPerson{} 2.必須實現(xiàn)interface中的各個方法
例2,繼承例1 public class Chinese:IPerson { public Chinese(){} //添加構造 public void getName(){} //實現(xiàn)getName() public void getAge(string s){} //實現(xiàn)getAge() }
abstract聲明抽象類、抽象方法 1.抽象方法所在類必須為抽象類 2.抽象類不能直接實例化,必須由其派生類實現(xiàn)。 3.抽象方法不包含方法主體,必須由派生類以override方式實現(xià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關鍵字 { Console.WriteLine("this is a test: void getDate()"); } }
public class JavaBook:Book { public override void getPrice() //實現(xiàn)抽象方法,必須實現(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(); //將調用JavaBook中getPrice() jbook.getName(); //將調用JavaBook中getName() jbook.getContent(); //將調用Book中getContent() jbook.getDate(); //將調用Book中getDate() } public static void Main() {test t=new test(); } }
virtual標記方法為虛方法 1.可在派生類中以override覆蓋此方法 2.不覆蓋也可由對象調用 3.無此標記的方法(也無其他標記),重寫時需用new隱藏原方法
abstract與virtual: 方法重寫時都使用 override 關鍵字 interface中的方法和abstract方法都要求實現(xiàn)
|
作者:未知 | 文章來源:未知 | 更新時間:2007-12-18 14:20:19
|
|
 |
 |
最新文章 |
|
|
 |