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』。