A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

接口和抽象类是面向对象中最最要的两个概念,两者的作用相似,都是同一类行和规范派生类的属性和方法。
接口是一种程序的约定,其本身并不去实现成员方法,而是通过派生类来实现,接口可以使得程序更加的清晰合理,比如定义一个汽车接口
,在汽车接口中,只是定义了开车的方法,但是发动机如何启动并没有真正的实现,而是在派生类中实现了开车的方法,所以接口的作用是,规定在派生类中必须要存在开车的方法,而且要实现。
接口一般定义的格式
[attributes] [modifiers] inerface identifier [:base-list] {interface-body)} [;]
attributes 附加的定义信息
modifiers 允许使用的修饰符和NEW 和4个访问修饰符。分别是 new  public protected internal priviate 。在一个接口定义中同意修饰符不允许出现多次,new修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员 public protected 和priviate 修饰符定义了对接口访问的权限

  1. <p> </p>
复制代码
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace a
  6. {
  7.     interface A
  8.     {
  9.         public void aa();
  10.         public void bb();
  11.     }
  12.     class a : A
  13.     {
  14.         public void aa()
  15.         {
  16.             Console.WriteLine("这是借口的方法1");
  17.         }

  18.         public void bb()
  19.         {
  20.             Console.WriteLine("这是借口的方法2");
  21.         }
  22.     }
  23.     class Program
  24.     {
  25.         static void Main(string[] args)
  26.         {
  27.             a abc = new a();//这里需要注意一下,实例化的是类而不是借口
  28.             abc.aa();
  29.             abc.bb();


  30.         }
  31.     }
  32. }
复制代码
抽象类的作用和接口类似,同样也定义了一些实现的方法,与接口不同的是,其中有一些方法已经实现了,使用从概念上来讲,抽象类是结余接口和类之间的一种特殊类

有时候类表达的并不是一个具体的事物,而是一个比较抽象的概念,使用,C#引入了一个新的概念,抽象类。

抽象类使用的abstract关键字定义,次关键字放在class前面 表示此类是抽象类。

抽象类的功能和接口类似,其中也定义了一些派生类必须要实现的方法,抽象类中的方法呗称为抽象方法。

抽象类中的抽象方法是通过派生类实现的,而抽象类有可以继承接口,这样三者之间就形成了比较复杂的继承关系,在设计代码的时候,灵活利用三者的继承关机可以适使得“低耦合”“高内聚”的特点体现的更加明显
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace a
  6. {
  7.    
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             rectangle aaa = new rectangle();
  13.             Console.WriteLine("矩形的面积是:{0}",aaa.GetArea(100,50));
  14.             


  15.         }
  16.     }
  17.     abstract class Shape
  18.     {
  19.         abstract public double GetArea(double x,double y);
  20.     }
  21.     class rectangle : Shape
  22.     {
  23.         public override double GetArea(double x, double y)
  24.         {
  25.             return x * y;
  26.         }
  27.     }
  28. }

复制代码

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

3 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马