• 抽象类与接口


        虽说在Java中接触过抽象类和接口的概念,这次C#学习中再次接触时,仍然觉得挺别扭的。这是两个很爱混淆的概念,可能很多人都存在着疑问,这两个概念是不是可以被相互替代,存在的意义是什么?该如何区分?我也存在相同的问题,感觉很糊涂,因此查了一些资料。这是我的一点看法:

        一、抽象类

        不象具体类那样描述一类具体事物。在现实世界存在许多抽象的东西,如刮风下雨、季节变化等,甚至是一些抽象的概念。
        例如将哺乳动物作为一个抽象类,老虎类、猩猩类都是哺乳动物类的子类。老虎类作为一个具体的类可以实现哺乳动物类的所有抽象方法。但却不能用哺乳动物类来实例化为一个具体的事物。

        二、接口

        接口是不相关的对象之间进行相互交互的设备。在程序设计中,往往也希望类隐藏其处理的特定事物的细节,对外界仅公布它必须支持的属性。接口机制提供了实现这种方式的途径。接口同样不可以实例化为具体的事物。

        由此可见,抽象类和接口都不能对其进行实例化操作,且在派生类中必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员。

        那么这二者为何不能相互代替,如何区分呢?我认为最重要抓住两点:
        1。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类);
        2。接口中声明的所有方法都必须且只能在派生类中实现,但抽象类中可以定义自己的方法,只有其中声明的抽象方法才必须在派生类中实现。
        我想抓住这两点,很多情况下我们就可以区分该选择抽象类还是接口来实现了。

  • 相关阅读:
    关于lockkeyword
    关于多层for循环迭代的效率优化问题
    Android 面试精华题目总结
    Linux基础回想(1)——Linux系统概述
    linux源代码编译安装OpenCV
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem C. Sometimes Naive (状压dp)
    校赛热身 Problem B. Matrix Fast Power
    校赛热身 Problem B. Matrix Fast Power
    集合的划分(递推)
  • 原文地址:https://www.cnblogs.com/chenghao/p/1272523.html
Copyright © 2020-2023  润新知