【博学谷学习记录】超强总结,用心分享 | JavaEE面向对象相关知识及多态

88 阅读4分钟

面向对象相关知识及多态

一、抽象类

抽象类概述及定义

抽象方法:将共性的行为(方法)抽取到父类之后,发现该方法的实现逻辑 无法在父类中给出具体明确,该方法就可以定义为抽象方法。

抽象类:如果一个类中存在抽象方法,那么该类就必须声明为抽象类

抽象方法的定义格式:

public abstract 返回值类型 方法名(参数列表);

注意事项:

  • 抽象类不能实例化

  • 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类

  • 可以有构造方法

  • 抽象类的子类

    • 要么重写抽象类中的所有抽象方法
    • 要么是抽象类

二、接口

2.1 接口的概述及定义

当一个类中的所有方法都是抽象方法的时候,我们就可以将其定义为接口 接口也是一种引用数据类型,它比抽象类还要抽象

接口存在的两个重要意义

  1. 规则的定义
  2. 程序的扩展性

接口用关键字interface来定义 public interface 接口名 {}

2.2 特点

  1. 接口和类之间是实现关系,通过implements关键字表示 public class 类名 implements 接口名 {}

    【注意:】接口和类的实现关系,可以单实现,也可以多实现。 public class 类名 implements 接口名1 , 接口名2 {}

  2. 接口不能实例化

  3. 接口的子类(实现类)

    要么重写接口中的所有抽象方法 要么是抽象类

2.3 接口中成员的特点

成员变量只能是常量

默认修饰符:public static final 构造方法 没有构造方法 成员方法 只能是抽象方法 默认修饰符:public abstract

JDK8版中接口成员的特点

JDK8版本后 1、允许在接口中定义非抽象方法,但是需要使用关键字 default 修饰,这些方法就是默认方法 作用:解决接口升级的问题

2、接口中允许定义static静态方法

接口中默认方法的定义格式: 格式:public default 返回值类型 方法名(参数列表) { } 范例:public default void show() { }

接口中默认方法的注意事项:

  • 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
  • public可以省略,default不能省略
  • 如果实现了多个接口,多个接口中存在相同的方法声明,子类就必须对该方法进行重写

接口中静态方法的定义格式: 格式:public static 返回值类型 方法名(参数列表) { } 范例:public static void show() { }

接口中静态方法的注意事项:

静态方法只能通过接口名调用,不能通过实现类名或者对象名调用 public可以省略,static不能省略

2.4 类和接口的关系

  • 类和类的关系 继承关系,只能单继承,但是可以多层继承
  • 类和接口的关系 实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口和接口的关系 继承关系,可以单继承,也可以多继承

三、多态

  • 什么是多态

    同一个对象,在不同时刻表现出来的不同形态

  • 多态的前提

    • 要有继承或实现关系
    • 要有方法的重写
    • 要有父类引用指向子类对象

3.1 成员访问特点

构造方法:同继承一样,子类会通过 super 访问父类构造方法

成员变量:编译看左边(父类),执行看左边(父类)

成员方法:编译看左边(父类),执行看右边(子类)

3.2 好处和弊端

  • 好处

    提高程序的扩展性。定义方法时候,使用父类型作为参数,在使用的时候,使用具体的子类型参与操作

  • 弊端

    不能使用子类的特有成员

3.3 转型

  • 向上转型 从子到父 父类引用指向子类对象

  • 向下转型 从父到子 父类引用转为子类对象

    格式:子类型 对象名 = (子类型)父类引用;