多態(tài)
如果一個(gè)類擁有多種繼承機(jī)制(包括接口也算繼承一種)谴分,那么這個(gè)類就是多態(tài)得類锈麸。例如:
interface Vegetarian{
}
class Bird{
}
class Animal{
public void run(){
System.out.println("Animal----Run is nature");
}
public void eat(){
System.out.println("Animal----eat is nature");
}
public void eat(String str){
System.out.println("Animal----eat is nature");
}
}
public class Deer extends Animal implements Vegetarian{
String name;
public void run(){
System.out.println("Deer----Run is nature");
}
public void sleep(){
System.out.println("Deer----sleep is nature");
}
public String toString(){
return name + " is a deer";
}
public static void main(String[] args) {
Deer d = new Deer();
Animal a = d;
a.run();
Vegetarian v = d;
Object o = d;
System.out.println(d instanceof Deer);
System.out.println(a instanceof Deer);
System.out.println(v instanceof Deer);
System.out.println(o instanceof Deer);
}
}
- 向上轉(zhuǎn)型:
- 1.父類不可以調(diào)用沒有交集得部分,有交集得部分可以調(diào)用牺蹄。
- 2.方法得多態(tài)是方法的重載重寫忘伞。
- 向下轉(zhuǎn)型:
- 1.必須要先向上轉(zhuǎn)型。
Final的定義和使用
- 1.final 標(biāo)記的類不能被繼承沙兰。
- 2.final 標(biāo)記的方法不能被子類重寫氓奈。
- 3.final 標(biāo)記的變量(成員變量或局部變量)即成為常量,只能賦值一次。
- 4.final 標(biāo)記的成員變量必須在聲明的同時(shí)賦值, 如果在聲明的時(shí)候沒有賦值,那么只有一次賦值的機(jī)會(huì), 而且只能在構(gòu)造方法中顯式賦值,然后才能使用鼎天。
- 5.final 標(biāo)記的局部變量可以只聲明不賦值,然后再進(jìn)行一次性的賦值舀奶。
- 6.final 一般用于標(biāo)記那些通用性的功能、實(shí)現(xiàn)方式或取值不能隨意被改變的成分,以避免被誤用
關(guān)鍵字
什么是關(guān)鍵字Java
語言保留的,Java 的開發(fā)和運(yùn)行平臺(tái)認(rèn)識(shí),并能正確處理的一些單詞斋射。其實(shí)就是個(gè)約定,就好比我們約定好,我畫個(gè)勾勾表示去吃飯育勺。那好了,只要我畫個(gè)勾勾,大家就知道是什么意思,并能夠正確執(zhí)行了。關(guān)鍵字這個(gè)約定在 Java 語言和 Java 的開發(fā)和運(yùn)行平臺(tái)之間,我們只要按照這個(gè)約定使用了某個(gè)關(guān)鍵字,Java 的開發(fā)和運(yùn)行平臺(tái)就能夠認(rèn)識(shí)它,并正確地處理罗岖。
Java 中關(guān)鍵字的基本含義:
? abstract:表明類或類中的方法是抽象的;
? boolean:基本數(shù)據(jù)類型之一,布爾類型;
? break:提前跳出一個(gè)塊;
? byte:基本數(shù)據(jù)類型之一,字節(jié)類型;
? case:在 switch 語句中,表明其中的一個(gè)分支;
? catch:用于處理例外情況,用來捕捉異常;
? char:基本數(shù)據(jù)類型之一,字符類型;
? class:類;
? continue:回到一個(gè)塊的開始處;
? default:用在 switch 語句中,表明一個(gè)默認(rèn)的分支;
? do:用在"do while"循環(huán)結(jié)構(gòu)中;
? double:基本數(shù)據(jù)類型之一,雙精度浮點(diǎn)數(shù)類型;
? else:在條件語句中,表明當(dāng)條件不成立時(shí)的分支;
? extends:用來表明一個(gè)類是另一個(gè)類的子類;
? final:用來表明一個(gè)類不能派生出子類,或類中的方法不能被覆蓋,或聲明一個(gè)變量是常量;
? finally:用于處理異常情況,用來聲明一個(gè)肯定會(huì)被執(zhí)行到的塊;
? float:基本數(shù)據(jù)類型之一,單精度浮點(diǎn)數(shù)類型;
? for:一種循環(huán)結(jié)構(gòu)的引導(dǎo)詞;
? if:條件語句的引導(dǎo)詞;
? implements:表明一個(gè)類實(shí)現(xiàn)了給定的接口;
? import:表明要訪問指定的類或包;
? instanceof:用來測(cè)試一個(gè)對(duì)象是否是一個(gè)指定類的實(shí)例;
? int:基本數(shù)據(jù)類型之一,整數(shù)類型;
? interface:接口;
? long:基本數(shù)據(jù)類型之一,長(zhǎng)整數(shù)類型;
? native:用來聲明一個(gè)方法是由與機(jī)器相關(guān)的語言(如 C/C++/FORTRAN 語言)實(shí)現(xiàn)的;
? new:用來申請(qǐng)新對(duì)象;
? package:包;
? private:一種訪問方式:私有模式;
? protected:一種訪問方式:保護(hù)模式;
? public:一種訪問方式:公共模式;
? return:從方法中返回值;
? short:基本數(shù)據(jù)類型之一,短整數(shù)類型;
? static:表明域或方法是靜態(tài)的,即該域或方法是屬于類的;
? super:當(dāng)前對(duì)象的父類對(duì)象的引用;
? switch:分支結(jié)構(gòu)的引導(dǎo)詞;
? synchronized:表明一段代碼的執(zhí)行需要同步;
? this:當(dāng)前對(duì)象的引用;
? throw:拋出一個(gè)異常;
? throws:聲明方法中拋出的所有異常;
? transient:聲明不用序列化的域;
? try:嘗試一個(gè)可能拋出異常的程序塊涧至;
? void:表明方法不返回值;
? volatile:表明兩個(gè)或多個(gè)變量必須同步地發(fā)生變化;
? while:用在循環(huán)結(jié)構(gòu)中;
? assert:聲明斷言;
? enum:聲明枚舉類型;
解釋幾點(diǎn):
(1):這些關(guān)鍵字的具體含義和使用方法,會(huì)在后面用到的地方講述
(2):Java 的關(guān)鍵字也是隨新的版本發(fā)布在不斷變動(dòng)中的,不是一成不變的
(3):所有關(guān)鍵字都是小寫的
(4):goto 和 const 不是 Java 編程語言中使用的關(guān)鍵字,但是是 Java 的保留字,也就是說 Java 保留了它們,但是沒有使用它們。true 和 false 不是關(guān)鍵字,而是 boolean 類型直接量
(5):表示類的關(guān)鍵字是 class