• 面试题之——抽象类(abstract class)与接口(interface)的区别


    1. 抽象类可以有构造方法,接口中不能有构造方法。(虽然抽象类有构造方法,但它也不能被实例化)
    2. 抽象类中可以有普通成员变量,接口中没有普通成员变量。
    3. 抽象类和接口中都可以包含静态成员变量。抽象类中的静态成员变量的访问类型可以是任意类型,但接口中定义的变量只能是public static final,并且默认为:public staic final类型。(接口毕竟要被子类实现,所以成员变量必须是public,如果是其他访问类型,那这个变量存在还有什么意义)
    4. 抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法。
    5. 抽象类中的抽象方法访问类型可以是public, protected和默认。但接口抽象方法只能是public类型的,且不管接口的方法是否使用public abstract修饰默认即为public abstract类型。(例如:在接口中定义void add();方法  是和public void  add(); 、public abstract void add()等价的)
    6. 抽象类中可以包含静态方法,而接口中不能包含静态方法
    7. 一个类可以实现多个接口,但只能继承一个抽象类。
    8. abstract class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a"关系,即父类和派生类在概念本质上应该是相同的。对于interface来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的, 仅仅是实现了interface定义的契约而已
  • 相关阅读:
    Cocos2d-x教程(34)-三维物体OBB碰撞检測算法
    POJ 2485 Highways 最小生成树 (Kruskal)
    LintCode-分糖果
    云存储市场布局已定,怎样助力企业互联网转型
    HDU 1853 Cyclic Tour(最小费用最大流)
    windows下基于bat的每1分钟执行一次一个程序
    python中匹配中文,解决不匹配,乱码等问题
    bytes,packet区别 字节数据包
    wmic
    paramiko 模块封装
  • 原文地址:https://www.cnblogs.com/riskyer/p/3320211.html
Copyright © 2020-2023  润新知