zoukankan      html  css  js  c++  java
  • 抽象类与接口

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

        一、抽象类

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

        二、接口

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

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

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

  • 相关阅读:
    图论算法之查找强分支
    图论算法之拓扑排序的简单代码
    图论算法之最短路径
    由函数符号找不到联想到的动态链接过程
    linux下cp覆盖原so文件时引起的段错误原因确定
    java 中能否使用 动态加载的类(Class.forName) 来做类型转换?
    为什么java不支持多重继承?
    static inner class 什么时候被加载
    thinking in java 读书笔记 --- overriding private method
    java List排序方法 Comparator和Comparable
  • 原文地址:https://www.cnblogs.com/chenghao/p/1272523.html
Copyright © 2011-2022 走看看