第六章 抽象类与接口.pptVIP

  • 6
  • 0
  • 约2.46千字
  • 约 29页
  • 2017-04-04 发布于江苏
  • 举报
第六章 抽象类与接口

第六章 抽象类与接口 引入 基类中的某些方法无需实现,实现了没任何意义。例如Shape中的Draw方法。基类中没有意义的实现可以考虑使用抽象成员。 抽象成员 抽象成员是被设计来被覆写的成员,具有以下特征: 它被用abstract修饰符标记 它没有实现代码块。抽象成员的代码块被分号代替 访问权限不能是private属性 抽象成员示例 抽象成员 抽象成员其他特征: 尽管抽象方法必须在派生类中用相应的方法覆写,但不能把virtual修饰符附加到abstract修饰符。(基类中的虚方法是有实现体的) 像虚方法一样,派生类中抽象方法的实现必须指定override修饰符 抽象成员只能被声明在抽象类中 抽象类 抽象类只能被用作其他类的基类,抽象类就是被设计来被继承的。其特征: 不能创建抽象类的实例 抽象类使用abstract修饰符声明 抽象类 抽象类可以包含抽象成员,但不是必须的 抽象类的成员是抽象成员和普通成员的任意组合 抽象类自己可以派生自另一个抽象类 抽象类 抽象类 任何派生自抽象类的类必须使用override关键字实现该类所有的抽象成员,除非派生类自己也是抽象类 抽象方法的重要特征 抽象的方法具有多态性。 接口 接口是表示一组函数成员而不实现成员的引用类型。类和结构可以实现接口。 public interface IComparable { int CompareTo(object obj); } 声明接口 接口声明不包括数据成员 接口声明只能包含方法、属性、事件和索引 函数成员的声明不能包含任何实现代码,而在每一个成员声明的主体后必须使用分号。 声明接口 接口名称必须从大写的I开始 接口声明可以有任何访问修饰符 接口成员是隐式的public,不允许有任何访问修饰符 实现接口 只有类和结构能够实现接口,要实现接口,类和结构必须: 在基类列表中包括接口名称 为每一个接口的成员提供实现 如果类从基类继承并实现接口,基类列表中的基类名称必须放在任何接口之前 接口具有多态性 接口是引用类型的。可以通过接口的引用调用实现的方法。 实现多个接口 类或结构可以实现任意数量的接口 所有实现的接口必须列在基类列表中并以逗号分隔(如果有基类名称,则在其之后) 3.接口的声明与实现举例 using System; namespace TestInterface { interface Ifunction1 { int sum(int x1,int x2); } interface Ifunction2 { string str{get;set;} } class MyTest:Ifunction1,Ifunction2 //此处的:代表接口的实现 { private string mystr; //构造函数 public MyTest(){} //构造函数 public MyTest(string str) { mystr = str; } ? //实现接口Ifunction1中的方法 public int sum(int x1,int x2) { return x1+x2; } ? //实现接口Ifunction2中的属性 public string str { get { return mystr; } set { mystr=value; } } } class MainClass { public static void Main() { //直接访问实例 MyTest a=new MyTest(); Console.WriteLine(a.sum(10,20)); MyTest b=new MyTest(How are you); Console.WriteLine(b.str); //通过接口访问实例 Ifunction1 c=new MyTest(); Console.WriteLine(c.sum(20,30)); Ifunction2 d=new MyTest(This is a book!); Console.WriteLine(d.str); Console.Read(); } } } 输出结果: 30 How are you! 50 This is a book! 接口可以继承接口 C#常见的几个接口 IComparable接口 public interface IComparable {int

文档评论(0)

1亿VIP精品文档

相关文档