人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

Java編程思想讀書筆記(7章)

Java編程思想讀書筆記(7章)

更新時(shí)間:2022-07-26 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

第7章 多態(tài)

  一.再探向上轉(zhuǎn)型(upcasting)

   將某個(gè)objectreference視為一個(gè)“referencetobasetype“的動(dòng)作,稱為向上轉(zhuǎn)型。

   1. Upcasting后調(diào)用某個(gè)函數(shù)時(shí),如果derivedclass中覆寫了該函數(shù),則會(huì)調(diào)用derivedclass中的函數(shù);否則,會(huì)調(diào)用baseclass中的函數(shù)。如

   class First{
   public void prt(){
   System.out.println("First");
   }
   }
   class Second extends First{
   //(a)

   public void prt(){
   System.out.println("Second");
   }
   }
   public class ExplicitStatic{
   public static void main(String[] args){
   First n = new Second();
   n.prt();;
   }
   }
   結(jié)果為Second。如果當(dāng)Secondclass中的prt()函數(shù)注釋掉,將輸出First。

   2. 向上轉(zhuǎn)型后只能調(diào)用baseclass中被derivedclass覆寫的函數(shù)。

   /*
   abstract class First{
   int i = 122;
   public void prt(){
   System.out.println("First.i = " + i);
   }
   public abstract void prt(First f);
   }
   class Second extends First{
   public void prt(){
   System.out.println("Second.i = " + i);
   }
   public void prt(First i)

   {
   }
   public void prt(int i)

   {
   }
   }
   public class ExplicitStatic{
   public static void main(String[] args){
   First n = new Second();
   n.prt(2);;
   }
   }
   */
   class First{
   public void prt(){
   System.out.println("First");
   }
   }
   class Second extends First{
   //(a)

   public void prt(){
   System.out.println("Second");
   }
   public void prt(int i){//(a)

   System.out.println("Second.i = " + i);
   }
   }
   public class ExplicitStatic{
   public static void main(String[] args){
   First n = new Second();
   n.prt(3);
   }
   }
   (a)處的函數(shù)只是Secondclass中的函數(shù),所以不能通過n.prt(3)進(jìn)行調(diào)用。

   二.Abstractclass和Abstractmethods

   1. 如果一個(gè)class中存在abstractclass,則class也必須被聲明為abstractclass。

   2. abstractclass不能被實(shí)例化。

   3. 如果baseclass是一個(gè)abstractclass,那么derivedclass必須實(shí)現(xiàn)baseclass中所有的abstractmethods;否則,derivedclass也必須被聲明為abstractclass。

   三.其它要點(diǎn)

   1. 純粹繼承與擴(kuò)充

   純粹繼承:只有baseclass所建議的函數(shù),才被derivedclass加以覆寫。

   擴(kuò)充:除了覆寫baseclass的函數(shù),還實(shí)現(xiàn)了自己的函數(shù)
   abstract class First{
   public abstract void f();
   public abstract void g();
   }
   //純粹繼承
   class Second extends First{
   public void f(){}
   public void g(){}
   }
   //擴(kuò)充
   class Third extends First{
   public void f(){}
   public void g(){}
   public void u(){}//baseclass不存在的函數(shù)
   }
   2. 向下轉(zhuǎn)型

   1) 向下轉(zhuǎn)型時(shí)只能調(diào)用baseclass中被覆寫過的函數(shù)

   2) 只有本來就為derivedclass對(duì)象時(shí)才能正確向下轉(zhuǎn)弄。

   class First{
   public void f(){}
   public void g(){}
   }
   class Second extends First{
   public void f(){}
   public void g(){}
   public void u(){}
   public void v(){}
   }
   public class ExplicitStatic{
   public static void main(String[] args){
   First[] x = {new First(), new Second()};
   x[0].f();
   x[1].g();
   //!x[1].u();classFirst中不存在函數(shù)u()

   //((Second)x[0]).f();(a)

   ((Second)x[1]).u();

   }
   }

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 梁平县| 永寿县| 嘉义县| 阿克陶县| 凤山市| 澄迈县| 河津市| 南部县| 桦川县| 合江县| 马边| 海晏县| 怀仁县| 临猗县| 吐鲁番市| 观塘区| 通化县| 五寨县| 凉城县| 临猗县| 海丰县| 垦利县| 长治市| 荣昌县| 昭平县| 双鸭山市| 四平市| 独山县| 焦作市| 江华| 彝良县| 万荣县| 邹平县| 英超| 从化市| 特克斯县| 山西省| 兴城市| 屏南县| 潮安县| 凤山县|