首页 > 代码库 > 抽象类与接口
抽象类与接口
1. 抽象类用abstrac修饰, 如abstrac class E。
抽象类里的抽象方法也用abstract修饰,如public abstract override void DoWork(int i);
非抽象类里不能有抽象方法。
抽象类里可由数据成员,可以实现方法。
当抽象类从基类继承虚方法时,抽象类可以使用抽象方法重写该虚方法。如public abstract override void DoWork(int i);
public class D { public virtual void DoWork(int i) { // Original implementation. } } public abstract class E : D { public abstract override void DoWork(int i); public abstract void Open(); public void NormalFoo() { this.i = 10; this.name = "Lucy"; Console.WriteLine("no virtual, no abstract function.{0}, {1}", this.i, this.name); } private int i; private string name; } public class F : E { public override void DoWork(int i) { // New implementation. } public override void Open() { throw new NotImplementedException(); } }
接口只能包括方法,属性、索引器、事件,
interface IInterface { void Test(); string this[int id] { get; } string Name { get; set; } event CompeleteEventHandler WorkCompleted; } class MyClass3 : IInterface { public void Test() { this.WorkCompleted(); } public string this[int id] { get { return ""; } } public string Name { get{return "";} set{} } public event CompeleteEventHandler WorkCompleted; }
相同与区别:
都不能实例化。
接口表达的是行为的规范和契约,代表的是一种能做某事能力。IEnumerable,IEnumerator, ICloneable,
抽象类通常定义在关系密切的类层次之中,处于较上位置,一个类一次可以实现若干个接口,但是只能扩展一个父类 。
而接口大多数是处于关系疏松但都实现某一功能的类中.
抽象类)定义了你是什么,接口(锁)规定了你能做什么。
抽象类与接口
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。