接口与类

一.接口 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. 实际开发中,抽象类更适合用于完成继承结构树,接口更适合扩展类功能。

posted @ 2020-08-04 09:18  仰观云  阅读(17)  评论(0编辑  收藏
Live2D