当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > c#中的interface abstract与virtual

ASP.NET
如何在命令行下编译一个asp.net项目
ADO 与ADO.NET
当VS.NET2003遇上VS.NET2005,WebService部署何去何从
昨日关注:逐步解说: 将Web Form网页国际化
在.NET下编写中文代码程序
防止同一个程序多次运行。 [VB.NET]
Visual C#设计多功能关机程序
什么是Web Service?
实现ListView控件的行间隔颜色的优化代码
失去信心?还是再度迷惘(二):Mono only is Mono,not .NET never
在Winform中发HTTP请求(调用WebService服务)
.NET中加密和解密的实现方法 3
notNET中加密和解密的实现方法
.NET中加密和解密的实现方法2
mshtml:javascript为HTML文件中的Select添加option
VS.NET解决方案的兼容问题
关于创建快捷方式的小结
使用 GDI+ 进行双缓冲绘图
如何用DataGrid实现根据日期判断是否显示New标志
昨日关注:C-omega vs ADO.net

ASP.NET 中的 c#中的interface abstract与virtual


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 83 ::
收藏到网摘: n/a


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方法都要求实现