• abstract class 与interface


    一.抽象类(absteact class)

    特点:

    1.抽象方法只作说明,而不包含实现,可以看成是没有实现体的虚方法

    2.抽象类不能被实例化。除此之外,具有类的其他特性

    3.抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类

    4.具体派生类必须覆盖基类的抽象方法

    5.抽象类可以派生自另一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖他们

    二.接口(interface)

    特点

    1.不能被实例化

    2.只能包含实现的方法声明

    3.成员可以包含方法、属性、索引器和事件

    4.接口中不能包含常量、字段、构造函数和静态成员

    5.接口中的所有成员默认为public,因此接口中不能有private修饰符

    6.派生类必须实现接口的所有成员

    7.一个类可以直接实现多个接口,接口之间用逗号隔开

    8.一个接口可以有多个父接口,实现该接口的类必须实现所有父接口中的所有成员

    三.抽象类和接口的相同点

    1.都可以被继承

    2.都不能被实例化

    3.都可以包含方法声明

    4.派生类必须实现未实现的方法

    四.抽象类和接口的区别

    1.抽象类是一个不完整的类,需要进一步细化,而接口只是一个行为的规范或规定,微软的自定义接口总是后带able字段,证明其是表述一类类“我能做...”

    2.抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件和方法声明,不能包含字段

    3.抽象类更多的是定义在一系列紧密相关类之间,而接口大多数是定义在关系疏松但都实现某一功能的类中

    4.接口基本上不具备继承的任何特点,它仅仅承诺了能够调用的方法

    5.接口可以被多重实现,抽象类只能被单一继承。即一个类一次可以实现若干个接口,但只能继承一个父类

    趣味理解:

    飞机会飞,鸟会飞,它们都继承了同一个接口“飞”;但是F22属于飞机抽象类,鸽子属于鸟抽象类。

    就像猫和狗都是动物(抽象类),你想要个动物类我给不了(不能实例化),但是我可以给你个具体的猫或狗(多态);而且只能说它是动物,你不能说它是人(单继承);一个动物可以会吃(接口)也可以有毛(多实现)。抽象类(动物)定义了它是什么,接口(吃)规定了它能做什么(一个接口最好只能做一件事,你不能要求吃也能长毛吧(接口染))

  • 相关阅读:
    染色问题的算法(转)
    函数的定义域和定义区间的区别(转)
    详解c++指针的指针和指针的引用(转)
    母函数(转)
    别人整理的DP大全(转)
    HDU 1430 魔板(康托展开+BFS+预处理)
    ZZULIOJ 1726 迷宫(BFS+小坑)
    NBUT 1635 Explosion(最小顶点覆盖)
    NBUT 1602 Mod Three(线段树单点更新区间查询)
    NBUT 1028 该减肥了(简单递推)
  • 原文地址:https://www.cnblogs.com/zwb7926/p/3274358.html
Copyright © 2020-2023  润新知