• 通俗的解释抽象类和接口的区别


    无意中发现了一位清华大佬的算法刷题笔记,关注公众号『勾玉技术』回复『清华算法』领取

    接口和抽象类有什么区别?
    接口是用interface声明,抽象类是用abstract修饰类,这是二者形式上的区别

    接口,可以认为是对功能的抽象;抽象类,可以认为是对类别的抽象。
    我们举个例子:男人和女人在生孩子。
    那么,“人类”是男人与女人的本质属性,“生孩子”是二者的行为,所以前者可以被定义成抽象类,后者可以认为是接口。这指导了我们应该在某情况下定义抽象类还是接口,在于我们关注的是类别还是功能。

    • 接口和抽象类都不能被实例化
    • 接口的方法不能在接口里实现(jdk1.8后可以有默认实现),抽象类中除了抽象方法也可以有非抽象方法
    • 接口除了static、final变量,不能有其他变量,抽象类可以
    • 接口的方法修饰符为public,抽象类还可以有protected、default(不能有private,不然没法被重写)
    • 一个类可以实现多个接口,但是只能实现一个抽象类
    1. 在 jdk 7 或更早版本中,接⼝⾥⾯只能有常量变量和抽象⽅法。这些接⼝⽅法必须由选择实现接⼝的类实现。
    2. jdk 8 的时候接⼝可以有默认⽅法和静态⽅法功能。
    3. Jdk 9 在接⼝中引⼊了私有⽅法和私有静态⽅法。
  • 相关阅读:
    ZOJ1542 POJ1861
    Codeforces Round #194 (Div. 2) 部分题解
    SRM585 div2
    hdu 4627 The Unsolvable Problem
    hdu 4622 Reincarnation
    hdu 4617 Weapon
    hdu 4609 3-idiots
    hdu 4616 Game
    hdu 4611 Balls Rearrangement
    hdu 4618 Palindrome Sub-Array
  • 原文地址:https://www.cnblogs.com/bronya0/p/14426829.html
Copyright © 2020-2023  润新知