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裡的方法,然後再派生子類,就可以...