接口和抽象类是面向对象中最最要的两个概念,两者的作用相似,都是同一类行和规范派生类的属性和方法。
接口是一种程序的约定,其本身并不去实现成员方法,而是通过派生类来实现,接口可以使得程序更加的清晰合理,比如定义一个汽车接口
,在汽车接口中,只是定义了开车的方法,但是发动机如何启动并没有真正的实现,而是在派生类中实现了开车的方法,所以接口的作用是,规定在派生类中必须要存在开车的方法,而且要实现。
接口一般定义的格式
[attributes] [modifiers] inerface identifier [:base-list] {interface-body)} [;]
attributes 附加的定义信息
modifiers 允许使用的修饰符和NEW 和4个访问修饰符。分别是 new public protected internal priviate 。在一个接口定义中同意修饰符不允许出现多次,new修饰符只能出现在嵌套接口中,表示覆盖了继承而来的同名成员 public protected 和priviate 修饰符定义了对接口访问的权限- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace a
- {
- interface A
- {
- public void aa();
- public void bb();
- }
- class a : A
- {
- public void aa()
- {
- Console.WriteLine("这是借口的方法1");
- }
- public void bb()
- {
- Console.WriteLine("这是借口的方法2");
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- a abc = new a();//这里需要注意一下,实例化的是类而不是借口
- abc.aa();
- abc.bb();
- }
- }
- }
复制代码 抽象类的作用和接口类似,同样也定义了一些实现的方法,与接口不同的是,其中有一些方法已经实现了,使用从概念上来讲,抽象类是结余接口和类之间的一种特殊类
有时候类表达的并不是一个具体的事物,而是一个比较抽象的概念,使用,C#引入了一个新的概念,抽象类。
抽象类使用的abstract关键字定义,次关键字放在class前面 表示此类是抽象类。
抽象类的功能和接口类似,其中也定义了一些派生类必须要实现的方法,抽象类中的方法呗称为抽象方法。
抽象类中的抽象方法是通过派生类实现的,而抽象类有可以继承接口,这样三者之间就形成了比较复杂的继承关系,在设计代码的时候,灵活利用三者的继承关机可以适使得“低耦合”“高内聚”的特点体现的更加明显- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace a
- {
-
- class Program
- {
- static void Main(string[] args)
- {
- rectangle aaa = new rectangle();
- Console.WriteLine("矩形的面积是:{0}",aaa.GetArea(100,50));
-
- }
- }
- abstract class Shape
- {
- abstract public double GetArea(double x,double y);
- }
- class rectangle : Shape
- {
- public override double GetArea(double x, double y)
- {
- return x * y;
- }
- }
- }
复制代码 |