zoukankan      html  css  js  c++  java
  • 设计模式之美(文摘)

    1.抽象类和接口的区别

    抽象类不允许被实例化,只能被继承。也就是说,你不能 new 一个抽象类的对象出来。

    抽象类可以包含属性和方法。方法既可以包含代码实现,也可以不包含代码实现。不包含代码实现的方法叫作抽象方法。

    子类继承抽象类,必须实现抽象类中的所有抽象方法。

    ----------------------------------------------------------------------------------

    接口不能包含属性(也就是成员变量)。

    接口只能声明方法,方法不能包含代码实现。

    类实现接口的时候,必须实现接口中声明的所有方法

    --------------------------------------------------------------------------------------

    抽象类实际上就是类,只不过是一种特殊的类,这种类不能被实例化为对象,只能被子类继承。

    我们知道,继承关系是一种 is-a 的关系,那抽象类既然属于类,也表示一种 is-a 的关系。

    相对于抽象类的 is-a 关系来说,接口表示一种 has-a 关系,表示具有某些功能。

    对于接口,有一个更加形象的叫法,那就是协议(contract)。

    ---------------------------------------------------------------------------------------------

    抽象类也是为代码复用而生的。多个子类可以继承抽象类中定义的属性和方法,避免在子类中,重复编写相同的代码。

    -----------------------------------------------------------------------------------------------------------------------------------------

    如果我们要表示一种 is-a 的关系,并且是为了解决代码复用的问题,我们就用抽象类;

    如果我们要表示一种 has-a 关系,并且是为了解决抽象而非代码复用的问题,那我们就可以使用接口

  • 相关阅读:
    Linux内核调试方法总结之ftrace
    Linux内核调试方法总结之ptrace
    Linux内核调试方法总结之ltrace
    文件处理
    python基础之字符编码
    第三篇:python基础之数据类型与变量
    第二篇:python基础之核心风格
    数据类型、字符编码、文件处理
    python入门
    爬取加载页面数据
  • 原文地址:https://www.cnblogs.com/smileberry/p/13178368.html
Copyright © 2011-2022 走看看