介面的概述,使用以及其與抽象類,類的區別和用法

2021-07-10 11:02:53 字數 4463 閱讀 6830

a:介面用關鍵字inte***ce表示 

inte***ce 介面名 {}

b:類實現介面用implements表示

class 類名 implements 介面名 {}

c:介面不能例項化

那麼,介面如何例項化呢?

按照多型的方式來例項化。

d:介面的子類

a:可以是抽象類。但是意義不大。

b:可以是具體類。要重寫介面中的所有抽象方法。(推薦方案)

由此可見:

a:具體類多型(幾乎沒有)

b:抽象類多型(常用)

c:介面多型(最常用)

//定義動物培訓介面

inte***ce

animaltrain

//抽象類實現介面

abstract

class

dogimplements

animaltrain

//具體類實現介面

class

catimplements

animaltrain

}class

inte***cedemo

}

成員變數;只能是常量,並且是靜態的。

預設修飾符:public static final

建議:自己手動給出。

構造方法:介面沒有構造方法。

成員方法:只能是抽象方法。

預設修飾符:public abstract

建議:自己手動給出。

a:成員區別

抽象類:

成員變數:可以變數,也可以常量

構造方法:有

成員方法:可以抽象,也可以非抽象

介面:成員變數:只可以常量

成員方法:只可以抽象

b:關係區別

類與類繼承,單繼承

類與介面

實現,單實現,多實現

介面與介面

繼承,單繼承,多繼承

c:設計理念區別

抽象類 被繼承體現的是:」is a」的關係。抽象類中定義的是該繼承體系的共性功能。

介面 被實現體現的是:」like a」的關係。介面中定義的是該繼承體系的擴充套件功能。

類與類:

繼承關係,只能單繼承,可以多層繼承。

類與介面:

實現關係,可以單實現,也可以多實現。

並且還可以在繼承乙個類的同時實現多個介面。

介面與介面:

繼承關係,可以單繼承,也可以多繼承。

inte***ce

father

inte***ce

mother

inte***ce

sister

extends

father,mother

//class son implements father,mother //多實現

class

sonextends

object

implements

father,mother

public

void show2()

}class

inte***cedemo3

}

例1

/*

貓狗案例,加入跳高的額外功能

分析:從具體到抽象

貓:姓名,年齡

吃飯,睡覺

狗:姓名,年齡

吃飯,睡覺

由於有共性功能,所以,我們抽取出乙個父類:

動物:姓名,年齡

吃飯();

睡覺(){}

貓:繼承自動物

狗:繼承自動物

跳高的額外功能是乙個新的擴充套件功能,所以我們要定義乙個介面

介面:跳高

部分貓:實現跳高

部分狗:實現跳高

實現;從抽象到具體

使用:使用具體類

*///定義跳高介面

inte***ce

jumpping

//定義抽象類

abstract

class

animal

public animal(string name,int age)

public string getname()

public

void setname(string name)

public

int getage()

public

void setage(int age)

//吃飯();

public

abstract

void eat();

//睡覺(){}

public

void sleep()

}//具體貓類

class

catextends

animal

public cat(string name,int age)

public

void eat()

}//具體狗類

class

dogextends

animal

public dog(string name,int age)

public

void eat()

}//有跳高功能的貓

//有跳高功能的狗

class

jumpdog

extends

dogimplements

jumpping

public jumpdog(string name,int age)

public

void jump()

}class

inte***cetest

}

例2

/*

老師和學生案例,加入抽菸的額外功能

分析:從具體到抽象

老師:姓名,年齡,吃飯,睡覺

學生:姓名,年齡,吃飯,睡覺

由於有共性功能,我們提取出乙個父類,人類。

人類:姓名,年齡

吃飯();

睡覺(){}

抽菸的額外功能不是人或者老師,或者學生一開始就應該具備的,所以,我們把它定義為介面

抽菸介面。

部分老師抽菸:實現抽菸介面

部分學生抽菸:實現抽菸介面

實現:從抽象到具體

使用:具體

*///定義抽菸介面

inte***ce

smoking

//定義抽象人類

abstract

class

person

public person(string name,int age)

public string getname()

public

void setname(string name)

public

int getage()

public

void setage(int age)

//吃飯();

public

abstract

void eat();

//睡覺(){}

public

void sleep()

}//具體老師類

class

teacher

extends

person

public teacher(string name,int age)

public

void eat()

}//具體學生類

class

student

extends

person

public student(string name,int age)

public

void eat()

}//抽菸的老師

class

smokingteacher

extends

teacher

implements

smoking

public smokingteacher(string name,int age)

public

void smoke()

}//抽菸的學生

class

smokingstudent

extends

student

implements

smoking

public smokingstudent(string name,int age)

public

void smoke()

}class

inte***cetest2

}

java抽象類與介面的區別抽象類與介面的特性是什麼

介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是個物件,什麼物件。介面表示的是物件的功能,能做什麼。舉個例子 男人 物件 和女人 物件 這兩個類 物件 他們可以抽象為人。公貓和母貓可以抽象為貓。人可以吃飯,可以睡覺,貓呢也可以吃飯和睡覺,那麼這個 吃飯 睡覺 就是某...

Java 抽象類與介面的使用

抽象類的概念 抽象類就是在普通類的基礎上擴充一些抽象方法,所謂的抽象方法指的是值宣告而未實現的方法 沒有方法體 所有的抽象方法要求使用abstract關鍵字來定義,並且抽象等待所在的類也一定要用abstract關鍵字定義,表示抽象類 abstract class person public void...

抽象類和介面的使用

1.抽象類和介面是專案設計相關,不關心具體實現細節 2.介面可以多繼承 類只能單繼承 3.如果是 描述 則定義成類 如果是 功能擴充套件 則定義成介面 介面a 不能建立物件 如果要用某乙個方法還需要同時覆蓋其他所有的方法 inte ce a 用乙個類去 空實現 介面a裡的方法,然後再派生子類,就可以...