码迷,mamicode.com
首页 > 其他好文 > 详细

抽象类和接口

时间:2015-12-08 00:03:37      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

前面写了面向对象编程的三个【特征】----封装、继承、多态。

  封装:用于隐藏内部实现,提供外部接口。

  继承:子类继承父类成员,实现代码复用的一种方式。

  多态:不同子类对同一个方法的不同实现。

接下来总结抽象类接口多态中的应用,以及比较重要的思想---面向接口编程

  面向对象的系统中,系统的各种功能都是由许许多多的对象协作完成的,这样各个对象之间的协作关系便成为系统设计的关键,程序设计需要考虑程序的维护性、扩展性,而面向接口编程实现的就是这样思想。

1、抽象类:是类的部分实现,用于约束其子类的行为,且允许不同的子类在此基础上拥有各自的实现。

    c#中通过abstract关键字定义抽象类抽象方法

    【语法】:public  abstract  class className

         {

            ……

         }

    abstract 修饰符用于表示所修饰的类是不完整的,并且它只能用作基类。

    【注意事项】:

      ⑴、抽象类不能被实例化,所以对抽象类使用 new 运算符会出现“编译时错误”。

      ⑵、不能是密封或静态的(抽象类需要被继承);(abstract不能与staticsealed同时使用

      ⑶、可以包含具体实现的方法。

2、抽象方法:

    【语法】:访问修饰符  abstract  返回值类型  方法名(参数列表);

    【注意事项】:

      ⑴、没有方法体;

      ⑵、抽象方法一定存在于抽象类中,但抽象类中不一定有抽象方法。

      ⑶、当从抽象类派生非抽象类时,非抽象子类必须实现父类中所有的抽象方法。从而重写那些抽象成员。

    【举例】:

        抽象类 A 引入抽象方法 F。类 B 引入另一个方法 G,但由于它不提供 F 的实现,B 也必须声明为抽象类。

        类 C 重写 F,并提供一个具体实现。由于 C 中没有了抽象成员,因此可以(但并非必须)将 C 声明为非抽象类。

 1 abstract class A
 2 {
 3 public abstract void F();
 4 }
 5 abstract class B: A
 6 {
 7 public void G() {}
 8 }
 9 class C: B
10 {
11 public override void F() {
12 // actual implementation of F
13 }
14 }

 

    

3、接口:(interface)一种既能让子类拥有多个父类的功能,又不破坏继承单根性的方法。

    接口通常代表一个角色,它包装与该角色相关的操作和属性,而实现该接口的类便是扮演角色的演员。一个角色可以由不同的演员饰演,而这些演员除了扮演一个共同的角色外,并不要求具有其他共同点。

  【语法】:[访问修饰符] interface  接口名

       {

          //接口体

       }

   【注意事项】:

      1、接口名通常使用大写的“I”开头,表明其是接口类型;

      2、接口可由方法属性事件索引器4种成员类型的任意组合构成不包含字段

      3、接口中定义的成员不能有具体实现;

      4、接口中的成员不需要任何访问修饰,默认public类型

抽象类和接口

标签:

原文地址:http://www.cnblogs.com/pengyouqiang88/p/5027665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!