Java基礎_12 | 抽象類和接口

1.抽象類和抽象方法

1.1.爲什麼需要抽象類

  • Java中使用抽象類是爲了更好的對類進行分類。

抽象類通常用來作爲一個類族最頂層的父類,表示該類族所有事物的共性,用底層的類表示具體事物,比如在現實生活中有蘋果類、西瓜類等等,這些具體的類都可以抽象爲“水果類”。

1.2.語法規則

抽象類是專門設計爲子類繼承的類,通常都包括一個或多個抽象方法,根據繼承抽象類的子類的實際情況,由子類完成其抽象方法的代碼。

  • 抽象方法
    • 沒有方法體的方法稱爲抽象方法,用abstract關鍵詞修飾;
    • 含有抽象方法的類必須聲明爲抽象類
  • 抽象類
    • 定義一個類的時候,在類名前加abstract關鍵詞表示這個類是抽象類;
    • 抽象類不能創建具體的對象(比如水果類不能創建一個具體的水果);
    • 抽象類可以包含普通方法;
    • 抽象類不一定有抽象方法,有抽象方法的一定是抽象類;

1.3.示例程序

/**
 * @brief  抽象類和抽象方法示例程序
 * @author mculvoer666
 * @date   2019/5/1
 */
/**
 * 水果類(抽象類)
 */
abstract class Fruit
{
    /**
     * 獲取信息方法(抽象方法)
     */
    abstract public void get();
}
/**
 * 蘋果類,繼承自水果類
 */
class Apple extends Fruit
{
    /**
     * 重寫父類方法get
     */
    public void get()
    {
        System.out.println("I am a Apple.");
    }
}
/**
 * 香蕉類,繼承自水果類
 */
class Banana extends Fruit
{
    /**
     * 重寫父類方法get
     */
    public void get()
    {
        System.out.println("I am a Banana.");
    }
}
class TestAbstract
{
    public static void main(String[] args) {
        Apple apple1 = new Apple();
        Banana banana1 = new Banana();

        apple1.get();
        banana1.get();

    }
}

執行結果如圖:

2.接口

2.1.什麼是接口

接口是一種特殊的抽象類。

2.2.語法規則

  • 接口的定義格式:
<訪問控制符> interface <接口名>
{
	/* 變量聲明 */
	/* 抽象方法聲明 */
}
  • 關於接口中的變量
    • 接口裏面的變量自動被賦予public static final,且必須以常量值初始化;
    • 實際開發中,接口中定義的變量作爲全局變量使用;
    • 接口中變量的訪問形式:<接口名>.<變量名>
    • 接口中定義的成員變量在實現類中不能被更改;
  • 關於接口中的抽象方法
    • 接口裏面的方法都是抽象方法,自動被賦予public abstract
    • 接口中定義方法不能使用protected、private、static、final等關鍵字修飾;
  • 關於接口的訪問控制符
    • 接口的訪問控制符只能是public或者默認
    • 如果接口的訪問控制符是public,那麼其中的成員變量和抽象方法不管有沒有聲明權限,都是public;
  • 關於接口的繼承
    • 一個接口不能繼承其他的類,但是可以繼承接口,並且可以繼承多個接口

2.3.接口的實現

  • 接口是一種特殊的抽象類,不能實例化(創造具體的對象);
  • 接口可以被一個類實現;
  • 一個類可以實現多個接口;

一個類實現接口的語法規則如下:

class <類名> implements <接口名>
{

}

2.4.接口示例程序

/**
 * @brief  接口示例程序
 * @author mculvoer666
 * @date   2019/5/1
 */
/**
 * 水果接口
 */
interface Fruit
{
    /**
     * 獲取信息方法(抽象方法)
     */
    abstract public void get();
}
/**
 * 蘋果類,實現水果接口
 */
class Apple implements Fruit
{
    /**
     * 重寫父類方法get
     */
    public void get()
    {
        System.out.println("I am a Apple.");
    }
}
/**
 * 香蕉類,實現水果接口
 */
class Banana implements Fruit
{
    /**
     * 重寫父類方法get
     */
    public void get()
    {
        System.out.println("I am a Banana.");
    }
}
class TestInterface
{
    public static void main(String[] args) {
        Apple apple1 = new Apple();
        Banana banana1 = new Banana();

        apple1.get();
        banana1.get();

    }
}

運行結果如下:

接收更多精彩文章及資源推送,歡迎訂閱我的微信公衆號:『mculover666』

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章