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

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

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

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

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

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

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

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

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

    5、……

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

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

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

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

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

    (以上抄自互联网)

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

    我的理解:

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

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

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

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


  • 相关阅读:
    JVM学习笔记(三)——类加载机制
    JVM学习笔记(二)——垃圾收集器和内存分配策略
    JVM学习笔记(一) ——Java虚拟机内存结构
    KMP算法及next数组优化
    C Primer Plus课后编程习题
    【小白出错日记】C语言篇
    C语言学习重点提纲
    编译原理学习-形式语言 乔姆斯基文法
    3.11上午课程重点
    FPGA学习-PS2接口
  • 原文地址:https://www.cnblogs.com/leftfist/p/4257875.html
Copyright © 2011-2022 走看看