美文网首页
抽象类与接口

抽象类与接口

作者: 混世小码农 | 来源:发表于2019-06-13 18:19 被阅读0次

抽象类:

在程序中使用关键字abstract

如果说正常类是一个完整的类的话,抽象类实际上是一个不完整的类

抽象类的特点:

       1.如果类中存在抽象方法,那么该方法不可以有实现部分,只能声明方法。

       2.含有抽象方法的类一定是抽象类

       3.抽象类不一定含有抽象方法

     4.如果子类的父类为抽象类并且含有抽象方法的话,子类必须实现重写该抽象方法

       5.vinrual和abstract 不能使用 private 修饰符,要使用public修饰符

       6.virtual不能和abstract放在一起用

       7.抽象类不能被实例化

       8.抽象类可以包含静态成员

抽象了的作用:

父类约束子类行为。


虚方法和抽象方法的探讨

虚方法和抽象方法都可以供派生类重写

          1.虚方法必须有实现部分,并且为派生类提供了重写该方法的选项.

                         public virtual void Say(); //错误

           2.抽象方法没有实现部分,并且抽象方法的派生是一种强迫性的

               继承抽象类就必须实现抽象方法,这与Virtual是不同的

           3.抽象方法只能在抽象类中进行声明.抽象方法必须在派生类重写

               含有抽象的方法必然是抽象类.也就是说必须强制声明abstract,系统不会自动为我们添加

            4.抽象方法必须在派生类重写,这一点和interface类似,虚方法不必

虚方法和抽象的联系:

            1.无论是虚方法或者抽象方法,重写必须使用override关键字

             面向接口编程.



接口:接口就是公共契约

             接口的关键字:interface

             接口和类属于同级关系,都属于C#中额编程

             接口也被称为纯洁的抽象类

接口特点:

         1.接口不能有字段

         2.接口内不能有修饰符

         3.接口中不能有方法体(方法实现)

         4.接口不可以被直接实例化

         5.接口成员总是公共的

          6.接口中可以有属性,但是不能有修饰符

          7.接口中可以有索引器/事件声明

          8.接口中声明的方法,子类实现的时候虽然也用override关键字,但是不属于重写,这里不能把override显示的声明出来

开发准则:尽量多用接口

能用接口不用抽象类,能用抽象类不要虚方法.

相关文章

网友评论

      本文标题:抽象类与接口

      本文链接:https://www.haomeiwen.com/subject/ojkymttx.html