• 接口与类


    一.接口 interface

    Ⅰ. 概念

    java中类是单继承的,程序的灵活性、扩展性都受到了影响.为了弥补单继承的缺点,java提供了接口来扩展类;

    Ⅱ. 定义

    格式:interface 接口名{}

    Ⅲ. 特点

    1. 接口中可以定义成员属性,必须是静态常量,需要通过public static final修饰,如果不写,程序默认补充修饰
    2. 只能定义抽象方法,需要public abstract 修饰,不写则默认;不能定义构造方法、构造代码块、静态代码块。(1.8及以后可以定义默认非抽象方法)
    3. 不能创建对象。

    Ⅳ. 使用

    格式:class 类名 implements 接口名{}

    1. 类在实现接口时,必须重写接口方法,否则需定为抽象类。

    2. 可以多接口,每个接口的方法都需要实现。

    3. 可以同时继承与实现接口,但继承必须放在最前面。如:

      class 类名 extends 父类名 implements 接口名1,接口名2,……{}

    Ⅴ. 类和接口的组合关系

    1. 类和类:继承,Java类单继承,多重继承

    2. 类和接口:java 一个类可以实现多个接口,类不能继承接口,接口也不能继承类,只能:类实现接口

    3. 接口与接口:接口可以继承接口,并且可以继承多个接口。若两个接口具有相同的方法,则都实现了。

      

    二. 抽象类 abstract

    Ⅰ. 修饰方法(抽象方法)

    格式:修饰符 abstract 返回值类型 方法名(参数列表);

    不能有方法体,必须存在于抽象类中

    Ⅱ. 修饰类(抽象类)

    格式:修饰符 abstract class 类名{}

    可以有的成员:成员属性、普通成员方法、抽象方法、构造代码块、静态代码块、构造方法(比普通类多一个抽象方法)

    特点

    1. 若类中有抽象方法,则必须声明为抽象类。
    2. 父类为抽象类,子类必须重写抽象方法,如果子类不想重写抽象方法,则可将子类也定义为抽象类。
    3. 抽象类的非抽象方法,可以被继承,不能被重写。
    4. 抽象类可以定义构造方法,只能提供子类使用。
    5. 抽象类不能new对象,编译报错。
    6. 多态
      • 方法可以重载,满足编译时期多态
      • 支持向上造型,满足运行时多态
      • 向上造型:编译看左边,执行看右边抽象子类不能向上造型
    7. abstract不能和final、private、static 同时使用
      • 与final:final修饰方法,则方法不能被重写。修饰类则不能不继承,天生冲突
      • 与static:static修饰方法,则不能被重写,天生冲突。(static只能修饰内部的类,不需深究)
      • 与private:private权限修饰符只能在本类中可见,而abstract修饰的类、方法都需被子类可见
    8. 优点:象方法可以满足每个子类都重写自己的方法,提高了灵活性。

      

    三. 接口与抽象类

    1. 抽象类中可以定义成员属性,接口中成员属性只能是静态常量

    2. 抽象类可以有抽象方法也可以包含非抽象方法,接口中只能定义抽象方法。(1.8及以后可以定义默认非抽象方法)

    3. java类只能单继承,接口可以多实现

    4. 实际开发中,抽象类更适合用于完成继承结构树,接口更适合扩展类功能。

  • 相关阅读:
    Error和Exception的区别
    当try和finally都包含return时的执行顺序
    String,StringBuffer处理字符串的区别
    使用idea对XML的增删改查
    IO流,字节流复制文件,字符流+缓冲复制文件
    MySQL同步故障:" Slave_SQL_Running:No" 主从同步的从表进行了写操作
    常用MQ的对比冷知识
    Redis-避免缓存穿透
    Docker容器与虚拟化技术——部署KVM虚拟化平台
    HTML日记 第三篇 关于图片的冷知识(附带一些浮动的基础知识)
  • 原文地址:https://www.cnblogs.com/juzhuxiaozhu/p/13431318.html
Copyright © 2020-2023  润新知