一.多態(tài)?
?? ?前提:
?? ??? ?? ?1.有繼承關(guān)系
?? ??? ?? ?2.有方法的重寫(xiě)
?? ??? ?? ?3.父類(lèi)引用指向子類(lèi)對(duì)象
? ? 調(diào)用關(guān)系:
?? ??? ?? ? 當(dāng)父類(lèi)的引用指向子類(lèi)的對(duì)象時(shí);
?? ??? ??? ?? ? 調(diào)用同名的靜態(tài)變量 --?父類(lèi)
?? ??? ??? ?? ? 調(diào)用同名的靜態(tài)方法 --?父類(lèi)
?? ??? ??? ?? ? 調(diào)用同名的成員變量 --?父類(lèi)
?? ??? ??? ?? ? 調(diào)用同名的成員方法 --?子類(lèi)
?? ??? ??? ?? ? 子類(lèi)獨(dú)有的變量和方法不能被調(diào)用
? ? 二中轉(zhuǎn)型:
?? ?? ? 向上轉(zhuǎn)型:
?? ??? ??? ??? ?? ? Person?p =?new Teacher();
?? ?? ? 向下轉(zhuǎn)型:
?? ??? ??? ??? ?? ? Teacher t = (Teacher)p;
二.抽象類(lèi):
? ? 抽象類(lèi)的格式:
?? ???? ??? ?? ? abstract?修飾符?返回值?方法名 (參數(shù)列表);
抽象類(lèi):用abstract修飾的類(lèi)叫做抽象類(lèi);
?? ??? ??? ?? ? 1.抽象類(lèi)中可以沒(méi)有抽象方法,有抽象方法的類(lèi)一定是抽象類(lèi);
?? ??? ??? ?? ? 2.抽象類(lèi)不能創(chuàng)建對(duì)象,需要使用子類(lèi)的向上轉(zhuǎn)型
?? ??? ??? ?? ? 3.抽象類(lèi)不能使用final修飾
?? ??? ??? ?? ? 4.抽象類(lèi)中既可以定義常量?也可以定義變量
?? ??? ??? ?? ? 5.抽象類(lèi)的子類(lèi)要么實(shí)現(xiàn)抽象類(lèi)所有的抽象方法,要么本身就是一個(gè)抽象類(lèi)
?? ??? ??? ?? ? 6.抽象類(lèi)中有構(gòu)造方法
三.接口:interface
?? ?? ?定義格式:
?? ??? ??? ??? ?? ? Interface?接口名 {}
?? ?? ? 特點(diǎn):
?? ??? ??? ?? ? 1.接口中的所有方法都是抽象方法(JDK1.8以前),默認(rèn)都有public?abstract修飾
?? ??? ??? ??? ?2.接口中只能定義常量?默認(rèn)有?public?static?final修飾
?? ??? ??? ?? ? 3.接口本身不能創(chuàng)建對(duì)象?需要使用子類(lèi)的向上轉(zhuǎn)型
?? ??? ??? ??? ??? ?? ? 接口的子類(lèi):使用implements實(shí)現(xiàn)類(lèi)接口的類(lèi)
?? ??? ??? ?? ? 4.一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口
?? ??? ??? ?? ? 5.接口的子類(lèi)要么實(shí)現(xiàn)了接口中多有的抽象方法?要么本身是一個(gè)抽象類(lèi)
?? ??? ??? ?? ? 6.接口沒(méi)有構(gòu)造方法
?? ??? ??? ?? ? 7.接口只能繼承接口?不能實(shí)現(xiàn)接口?接口支持多繼承
?? ??? ??? ?? ? 8.JDK1.8以后接口中可以定義實(shí)現(xiàn)類(lèi)?但必須要有?static?或者?default修飾
?? ??? ??? ?? ? 9.一個(gè)類(lèi)可以同時(shí)繼承一個(gè)類(lèi)?實(shí)現(xiàn)多個(gè)接口
四.抽象類(lèi)和接口的區(qū)別
?? ??? ??? ?? ? 1.一個(gè)類(lèi)最多只能繼承一個(gè)抽象類(lèi)?但可以實(shí)現(xiàn)多個(gè)接口
?? ??? ??? ?? ? 2.抽象類(lèi)中可以有非抽象方法,接口中都是抽象方法(JDK1.8之前)默認(rèn)有public?abstract修飾
?? ??? ??? ?? ? 3.抽象類(lèi)中既可以定義常量?也可以定義變量?接口中只能定義常量?默認(rèn)有public?static?final修飾
?? ??? ??? ?? ? 4.接口只能繼承接口不能實(shí)現(xiàn)接口?并可以多繼承