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

    这一定是面试的热门问题!

    但我不仅为这个。之前学习C#面试题,遇到过这个问题;现在学习java,也遇到这个问题,因此想总结一下。

    抽象类和接口都有制定规范方法,强制子类实现的一面,很多时候,作为一个抽象父类,它们是共通的,既可以用抽象类,也可以用接口。

    但不同的地方还是有很多:

    1、抽象类是一个类,里面除了有抽象方法,还可以有成员变量,属性,成员函数,但接口只有待实现的方法

    2、子类不一定要实现抽象类的方法,它可以原封不动地将这个方法继承下来,这时候,子类也是一个抽象类;但继承接口的子类,一定要将接口的方法实现。当然,接口也可以继承别的接口,对接口而言,是无须,也不能实现方法体的。

    3、抽象类的抽象方法,不一定是public的;但接口的方法,子类实现的时候,一定要是public

    4、总的看来,抽象类要比接口强大,但一个子类只能继承一个抽象类(呵呵,岂止抽象类,子类只能继承一个类而已),但可以继承多个接口

    5、……

    但究其实,抽象类和接口是两样不同概念的东西,它们有着本质的区别:

    抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;

    接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性;

    分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是什么”

    为外部提供调用或功能需要扩充时优先使用接口

    (以上抄自互联网)

    简单来说,抽象类表述的是本质,即“是什么”;接口表述的是功能,即“会什么”,或“能做什么”

    我的理解:

    孙悟空本质上是一个猴子,但它学会了许多本领,神通广大,成为齐天大圣。

    用面向对象语言,可以这么表述:

    孙悟空实现了猴子的抽象类,同时继承了一系列接口:

    筋斗云,72般变化,分毫法,火眼金睛


  • 相关阅读:
    贪心法
    div 样式
    echarts标题(title)配置
    利用svg画路径图 vue
    vue 杂项
    Charset 0x0408D00000/MS936 is not supported by the JVM
    Android开发中Eclipse常用快捷键
    Java 中强制删除文件的方法
    利用html5的localStorage结合jquery实现日常费用查询器
    Ant编译utf8非法字符:/65279 解决方法
  • 原文地址:https://www.cnblogs.com/leftfist/p/4257875.html
Copyright © 2011-2022 走看看