六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

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

[摘要]第7章 多態  一.再探向上轉型(upcasting)   將某個objectreference視為一個“referencetobasetype“的動作,稱為向上轉型。   1. Upcasting后調用某個函數時,如果derivedclass中覆寫了該函數,則會調用derivedclass中的函...
第7章 多態

  一.再探向上轉型(upcasting)

   將某個objectreference視為一個“referencetobasetype“的動作,稱為向上轉型。

   1. Upcasting后調用某個函數時,如果derivedclass中覆寫了該函數,則會調用derivedclass中的函數;否則,會調用baseclass中的函數。如

   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();;
   }
   }
   結果為Second。如果當Secondclass中的prt()函數注釋掉,將輸出First。

   2. 向上轉型后只能調用baseclass中被derivedclass覆寫的函數。

   /*
   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)處的函數只是Secondclass中的函數,所以不能通過n.prt(3)進行調用。

   二.Abstractclass和Abstractmethods

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

   2. abstractclass不能被實例化。

   3. 如果baseclass是一個abstractclass,那么derivedclass必須實現baseclass中所有的abstractmethods;否則,derivedclass也必須被聲明為abstractclass。

   三.其它要點

   1. 純粹繼承與擴充

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

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

   1) 向下轉型時只能調用baseclass中被覆寫過的函數

   2) 只有本來就為derivedclass對象時才能正確向下轉弄。

   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中不存在函數u()

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

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

   }
   }




主站蜘蛛池模板: 日本一区二区三区在线观看视频 | 亚洲精品国产精品乱码不卞 | 日日狠狠 | 小情侣旅馆内无套啪啪 | 午夜精品久久久久久久99热 | 亚洲欧洲国产精品久久 | 色综合久久综合网观看 | 中文字幕35 | 日韩视频在线观看中字 | 日韩视频大全 | 三级黄色片日韩 | 日本成片免费高清 | 色偷偷91综合久久噜噜app | 色姣姣狠狠撩综合网 | 日韩欧美中文字幕一区二区三区 | 中文字幕第15页 | 天天噜噜色 | 午夜视频在线观看完整高清在线 | 越南高清xxxxx18 | 日韩人成免费网站大片 | 青草伊人网 | 亚洲欧美综合一区二区三区四区 | 青青青爽视频在线观看 | 欧美性插视频 | 热久久思思 | 视频一区二区三区欧美日韩 | 四虎影院免费视频 | 性欧美另类 | 一本一道波多野结衣一区二区 | 色香欲综合成人免费视频 | 亚洲性免费 | 婷婷丁香九月 | 在线观看日本视频 | 亚洲 欧美 成人日韩 | 亚洲va欧美va天堂v国产综合 | 思思久久96热在精品国产免费 | 四虎影院在线观看网站 | 日韩国产精品99久久久久久 | 热re久久精品国产99热 | 一二三四在线观看免费高清观看 | 午夜在线观看网站 |