Java的重寫(override)與函數(shù)轉(zhuǎn)型

Java的重寫

1.函數(shù)的復(fù)寫(override).
2.使用super調(diào)用父類的成員函數(shù).
復(fù)寫與重載是不同的.
復(fù)寫在兩個(gè)類中,在父類與子類中.
重載在一個(gè)類中.
class Person20{ String name; int age; void introduce(){ System.out.println("我的名字"+ name+"年齡"+age); } }
//復(fù)寫(override)也稱之為覆蓋或者重寫
//1.在具有父子關(guān)系的兩個(gè)類當(dāng)中.
//2.父類和子類各有一個(gè)函數(shù),這兩個(gè)函數(shù)的定義(返回值 ,函數(shù)名和參數(shù)列表)完全相同
class Student20 extends Person20{ String address; void introduce(){ //anotherFun(); super.introduce();//調(diào)用父類的成員函數(shù),減少重復(fù)代碼, //System.out.println("我的姓名是"+name+"我的年齡是"+age); System.out.println("我的家在"+address); } }
class Test20{ public static void main(String args[]){ Student20 s = new Student20(); s.name = "張三"; s.age = 20; s.address = "深圳"; s.introduce(); Person20 p = new Person20(); //p.name = "李四"; //p.age = 30; //p.introduce(); //p.address = "廣州"; } }

Java的函數(shù)轉(zhuǎn)型

這是一個(gè)非常非常的語法.就像吃飯喝水一樣平常,面向?qū)ο蠖鄳B(tài)性的一個(gè)體現(xiàn).
1.對(duì)象的向上轉(zhuǎn)型.
2.對(duì)象的向下轉(zhuǎn)型.
對(duì)象的向上轉(zhuǎn)型.
向上轉(zhuǎn)型: 將子類的對(duì)象賦值給父類的引用.
Student s = new Student();
Person p = s; //向上轉(zhuǎn)換.子類的對(duì)象賦值給父類的引用.
向上轉(zhuǎn)型是一定可以成功.

對(duì)象的向下轉(zhuǎn)型:
向下轉(zhuǎn)型--將父類的對(duì)象賦值給子類的引用.
Student s1 = new Student();
Person p = s1;
Student s2 = (Student)p;

class Person20{ String name; int age; void introduce(){ System.out.println("我的名字"+ name+"年齡"+age); } }

class Student20 extends Person20{ String address; void study(){ System.out.println("學(xué)習(xí)"); } void introduce(){ //anotherFun(); super.introduce();//調(diào)用父類的成員函數(shù),減少重復(fù)代碼, //System.out.println("我的姓名是"+name+"我的年齡是"+age); System.out.println("我的家在"+address); } }

//一個(gè)引用能夠調(diào)用那些成員(變量和函數(shù)),取決于這個(gè)引用的類型 //一個(gè)引用調(diào)用的是那一個(gè)方法,取決于這個(gè)引用指向的對(duì)象. class Test20{ public static void main(String args[]){ //正確的向下轉(zhuǎn)型 Person20 p = new Student20(); Student20 s = (Student20)p; //錯(cuò)誤的向下轉(zhuǎn)型 //Person p = new Person(); //Student s = (student)p; //向上轉(zhuǎn)型 //Student20 s = new Student20(); //Person20 p = s; //p.name = "張三"; //p.age = 20; //p.address = "北京"; //此語句不能執(zhí)行 //一個(gè)引用能夠調(diào)用那些成員(變量和函數(shù)),取決于這個(gè)引用的類型 //p.introduce();//調(diào)用子類的的introduce() //一個(gè)引用調(diào)用的是那一個(gè)方法,取決于這個(gè)引用指向的對(duì)象. } }


無論是上轉(zhuǎn)還是下轉(zhuǎn)都是為了讓類的使用范圍和適用范圍發(fā)生變化,以便操作不同范圍的變量或者方法。

1上轉(zhuǎn)型是指將子類對(duì)象使用父類引用進(jìn)行引用。
得:上轉(zhuǎn)型對(duì)象可以操作和使用子類繼承或者重寫的方法。
失:上轉(zhuǎn)型對(duì)象喪失了對(duì)子類新增成員變量或新增的方法的操作和使用。
2與向上轉(zhuǎn)型相反,即是把父類對(duì)象轉(zhuǎn)為子類對(duì)象:作用也與上轉(zhuǎn)相反。

java 轉(zhuǎn)型問題其實(shí)并不復(fù)雜,只要記住一句話:父類引用指向子類對(duì)象。子類和父類中定義同名的變量時(shí),僅僅是隱藏了,變量沒有多態(tài)性;而對(duì)于覆蓋的方法,Java表現(xiàn)出多態(tài)性,會(huì)調(diào)用更具體的子類里面的方法,無論從哪里調(diào)用,無論使用什么引用類型調(diào)用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,855評(píng)論 18 399
  • 20- 枚舉,枚舉原始值,枚舉相關(guān)值,switch提取枚舉關(guān)聯(lián)值 Swift枚舉: Swift中的枚舉比OC中的枚...
    iOS_恒仔閱讀 2,436評(píng)論 1 6
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,443評(píng)論 0 2
  • 題記:傳說,穆罕默德說過:“誰有兩個(gè)面包,賣掉一個(gè)吧,用來買水仙花,因?yàn)槊姘巧眢w的糧食,水仙是精神的糧食?!?今...
    霜巍閱讀 670評(píng)論 1 0
  • (十四) 一個(gè)在使勁逃,一個(gè)卻在使勁追。 逃的人是天心,追的人是沈秋棠。 兩人就像在玩著小時(shí)候的捉迷藏,童心未泯。...
    MTmark閱讀 335評(píng)論 0 0

友情鏈接更多精彩內(nèi)容