1 多態

1.1 多態概述

同一個對象,在不同時刻表現出來的不同形態

  • 舉例: 貓

    • 我們可以說貓是貓: 貓 cat = new 貓();
    • 我們也可以說貓是動物: 動物 animal = new 貓();
    • 這里貓在不同的時刻表現出來了不同的形態,這就是多態
  • 多態的前提和體現
    • 有繼承/實現關系
    • 有方法重寫
    • 有父類引用指向子類對象

1.2 多態中成員訪問特點

成員變量: 編譯看左邊,執行看左邊
成員方法: 編譯看左邊,執行看右邊

  • 為什么成員變量和成員方法的訪問不一樣呢?
    • 因為成員方法有重寫,而成員變量沒有

1.3 多態的好處和弊端

  • 多態的好處: 提高了程序的擴展性

  • 多態的弊端: 不能使用子類的特有功能

  • 具體體現: 定義方法的時候,使用父類型作為參數,將來在使用的時候,使用具體的子類型參與操作

1.4 多態中的轉型

  1. 向上轉型
    • 從子到父
    • 父類引用指向子類對象
  2. 向下轉型
    • 從父到子
    • 父類引用轉為子類對象

2 抽象類

2.1 抽象類概述

在Java中,一個==沒有方法體==的方法應該定義為==抽象方法==,而類中如果有==抽象方法==,該類必須定義為==抽象類==

2.2 抽象類的特點

抽象類和抽象方法必須使用abstract關鍵字修飾

public abstract class 類名 {}public abstract void eat();
  • 抽象類中不一定有抽象方法,有抽象方法的類一定是抽象類
  • 抽象類不能實例化
    • 抽象類如何實例化呢?
    • 參照多態的方式,通過子類對象實例化,這叫抽象類多態
  • 抽象類的子類
    • 要么重寫抽象類中的所有抽象方法
    • 要么是抽象類

2.3 抽象類的成員特點

  1. 成員變量
    • 可以是變量
    • 也可以是常量
  2. 構造方法
    • 有構造方法,但是不能實例化
    • 那么,構造方法的作用是什么呢? 用于子類訪問父類數據的初始化
  3. 成員方法
    • 可以有抽象方法: 限定子類必須完成某些動作
    • 也可以有非抽象方法: 提高代碼復用性

3 接口

3.1 接口概述

接口就是一種==公共的規范標準==,只要符合規范標準,大家都可以通用
Java中的接口更多的體現在==對行為的抽象==

3.2 接口的特點

  • 接口用關鍵字interface修飾

    • public interface 接口名 {}
  • 類實現接口用implements表示

    • public class 類名 implements 接口名 {}
  • 接口不能實例化

    • 接口如何實例化呢? 參照多態的方式,通過實現類對象實例化,這叫接口多態

    • 多態的形式: 具體類多態,抽象類多態,接口多態

    • 多態的前提: 有繼承或者實現關系、有方法重寫、有父(類/接口)引用指向(子/實現)類對象
  • 接口的實現類

    • 要么重寫接口中的所有抽象方法

    • 要么是抽象類

3.3 接口的成員特點

  1. 成員變量
    • 只能是常量
    • 默認修飾符: public static final
  2. 構造方法
    • 接口沒有構造方法,因為接口主要是對行為進行抽象的,是沒有具體存在
    • 一個類如果沒有父類,默認繼承自Object類
  3. 成員方法
    • 只能是抽象方法
    • 默認修飾符: public abstract
    • 關于接口中的方法,JDK8和JDK9中有一些新特性,后面再講解

3.4 類和接口的關系

  1. 類和類的關系
    • 繼承關系,只能單繼承,但是可以多層繼承
  2. 類和接口的關系
    • 實現關系,可以單實現,也可以多實現,還可以在繼承一個類的同時實現多個接口
  3. 接口和接口的關系
    • 繼承關系,可以單繼承,也可以多繼承

3.5 抽象類和接口的區別

  1. 成員區別

    • 抽象類

      變量, 常量; 有構造方法; 有抽象方法, 也有非抽象方法

    • 接口
      常量; 抽象方法
  2. 關系區別

    • 類與類
      繼承,單繼承
    • 類與接口
      實現,可以單實現,也可以多實現
    • 接口與接口
      繼承,單繼承,多繼承
  3. 設計理念區別

    • 抽象類

      對類抽象,包括屬性、行為

    • 接口
      對行為抽象,主要是行為