interface用來聲明接口
1.只提供一些方法規約,不提供方法主體
  如
  public interface iperson
 {
  void getname();//不包含方法主體
  }
2.方法不能用public abstract等修飾,無字段變量,無構造函數。
3.方法可包含參數
  如  
  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
   }
實現interface的類
1.與繼承類的格式一致,如 public class chinese:iperson{}
2.必須實現interface中的各個方法
   例2,繼承例1
    public class chinese:iperson
  { 
   public chinese(){}             //添加構造
   public void getname(){}        //實現getname()
   public void getage(string s){} //實現getage()
   }
abstract聲明抽象類、抽象方法
1.抽象方法所在類必須為抽象類
2.抽象類不能直接實例化,必須由其派生類實現。
3.抽象方法不包含方法主體,必須由派生類以override方式實現此方法,這點跟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()   //實現抽象方法,必須實現
      {
  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方法都要求實現
新聞熱點
疑難解答