亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

繼承和finalize()

2019-11-18 12:08:33
字體:
來源:轉載
供稿:網友

  通過“合成”方法創建新類時,永遠不必擔心對那個類的成員對象的收尾工作。每個成員都是一個獨立的對象,所以會得到正常的垃圾收集以及收尾處理——無論它是不是不自己某個類一個成員。但在進行初始化的時候,必須覆蓋衍生類中的finalize()方法——假如已經設計了某個非凡的清除進程,要求它必須作為垃圾收集的一部分進行。覆蓋衍生類的finalize()時,務必記住調用finalize()的基礎類版本。否則,基礎類的初始化根本不會發生。下面這個例子便是明證:
  
  //: Frog.java
  // Testing finalize with inheritance
  
  class DoBaseFinalization {
   public static boolean flag = false;
  }
  
  class Characteristic {
   String s;
   Characteristic(String c) {
    s = c;
    System.out.PRintln(
     "Creating Characteristic " + s);
   }
   protected void finalize() {
    System.out.println(
     "finalizing Characteristic " + s);
   }
  }
  
  class LivingCreature {
   Characteristic p =
    new Characteristic("is alive");
   LivingCreature() {
    System.out.println("LivingCreature()");
   }
   protected void finalize() {
    System.out.println(
     "LivingCreature finalize");
    // Call base-class version LAST!
    if(DoBaseFinalization.flag)
     try {
      super.finalize();
     } catch(Throwable t) {}
   }
  }
  
  class Animal extends LivingCreature {
   Characteristic p =
    new Characteristic("has heart");
   Animal() {
    System.out.println("Animal()");
   }
   protected void finalize() {
    System.out.println("Animal finalize");
    if(DoBaseFinalization.flag)
     try {
      super.finalize();
     } catch(Throwable t) {}
   }
  }
  
  class Amphibian extends Animal {
   Characteristic p =
    new Characteristic("can live in water");
   Amphibian() {
    System.out.println("Amphibian()");
   }
   protected void finalize() {
    System.out.println("Amphibian finalize");
    if(DoBaseFinalization.flag)
     try {
      super.finalize();
     } catch(Throwable t) {}
   }
  }
  
  public class Frog extends Amphibian {
   Frog() {
    System.out.println("Frog()");
   }
   protected void finalize() {
    System.out.println("Frog finalize");
    if(DoBaseFinalization.flag)
     try {
      super.finalize();
     } catch(Throwable t) {}
   }
   public static void main(String[] args) {
    if(args.length != 0 &&
      args[0].equals("finalize"))
      DoBaseFinalization.flag = true;
    else
     System.out.println("not finalizing bases");
    new Frog(); // Instantly becomes garbage
    System.out.println("bye!");
    // Must do this to guarantee that all
    // finalizers will be called:
    System.runFinalizersOnExit(true);
   }
  } ///:~
  
  DoBasefinalization類只是簡單地容納了一個標志,向分級結構中的每個類指出是否應調用super.finalize()。這個標志的設置建立在命令行參數的基礎上,所以能夠在進行和不進行基礎類收尾工作的前提下查看行為。
  
  分級結構中的每個類也包含了Characteristic類的一個成員對象。大家可以看到,無論是否調用了基礎類收尾模塊,Characteristic成員對象都肯定會得到收尾(清除)處理。
  
  每個被覆蓋的finalize()至少要擁有對protected成員的訪問權力,因為Object類中的finalize()方法具有protected屬性,而編譯器不答應我們在繼續過程中消除訪問權限(“友好的”比“受到保護的”具有更小的訪問權限)。
  
  在Frog.main()中,DoBaseFinalization標志會得到配置,而且會創建單獨一個Frog對象。請記住垃圾收集(非凡是收尾工作)可能不會針對任何特定的對象發生,所以為了強制采取這一行動,System.runFinalizersOnExit(true)添加了額外的開銷,以保證收尾工作的正常進行。若沒有基礎類初始化,則輸出結果是:
  
  not finalizing bases
  Creating Characteristic is alive
  LivingCreature()
  Creating Characteristic has heart
  Animal()
  Creating Characteristic can live in water
  Amphibian()
  Frog()
  bye!
  Frog finalize
  finalizing Characteristic is alive
  finalizing Characteristic has heart
  finalizing Characteristic can live in water
  
  從中可以看出確實沒有為基礎類Frog調用收尾模塊。但假如在命令行加入“finalize”自變量,則會獲得下述結果:
  
  Creating Characteristic is alive
  LivingCreature()
  Creating Characteristic has heart
  Animal()
  Creating Characteristic can live in water
  Amphibian()
  Frog()
  bye!
  Frog finalize
  Amphibian finalize
  Animal finalize
  LivingCreature finalize
  finalizing Characteristic is alive
  finalizing Characteristic has heart
  finalizing Characteristic can live in water
  
  盡管成員對象按照與它們創建時相同的順序進行收尾,但從技術角度說,并沒有指定對象收尾的順序。但對于基礎類,我們可對收尾的順序進行控制。采用的最佳順序正是在這里采用的順序,它與初始化順序正好相反。按照與C++中用于“破壞器”相同的形式,我們應該首先執行衍生類的收尾,再是基礎類的收尾。這是由于衍生類的收尾可能調用基礎類中相同的方法,要求基礎類組件仍然處于活動狀態。因此,必須提前將它們清除(破壞)。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩高清| 欧美大片大片在线播放| 国产丝袜高跟一区| 中文字幕国产精品久久| 亚洲国产精品va在线观看黑人| 欧美最猛性xxxxx亚洲精品| 亚洲女在线观看| 欧美激情一二区| 亚洲精品v欧美精品v日韩精品| 欧美精品国产精品日韩精品| 欧美激情视频网站| 在线电影欧美日韩一区二区私密| 成人xxxxx| 欧美成人黄色小视频| 精品国产乱码久久久久酒店| 国内精品国产三级国产在线专| 1769国产精品| 91成人精品网站| 色噜噜亚洲精品中文字幕| 亚洲中国色老太| 欧美性猛交xxxxx水多| 国产中文欧美精品| 国产香蕉精品视频一区二区三区| 大胆欧美人体视频| 亚洲精品自产拍| 欧美专区在线观看| 欧美日韩视频免费播放| 欧洲成人午夜免费大片| 高清在线视频日韩欧美| 欧美国产欧美亚洲国产日韩mv天天看完整| 色婷婷av一区二区三区在线观看| 国产精品久久久久久久久久东京| 欧美精品久久久久久久| 国产日韩欧美91| 91午夜在线播放| 国产美女久久精品| 亚洲欧洲在线播放| 少妇高潮 亚洲精品| 日本人成精品视频在线| 久久国内精品一国内精品| 欧美日韩国产中文精品字幕自在自线| 欧美激情网友自拍| 久久激情视频久久| 欧美激情乱人伦| 欧美国产亚洲精品久久久8v| 欧美性精品220| 亚洲热线99精品视频| 国产精品扒开腿做| 日韩高清a**址| 国产不卡av在线| 国模gogo一区二区大胆私拍| 日韩在线观看网址| 日韩中文在线观看| 国产精品久久久久久av下载红粉| 这里只有精品在线观看| 国产成人在线一区| 日韩经典中文字幕| 日韩精品视频免费在线观看| 国产成人精品免费久久久久| 日韩欧美第一页| 久久精品久久久久久| 欧美成人午夜激情视频| 欧美噜噜久久久xxx| 日韩电影免费观看在线观看| 欧美高清在线观看| 国产精品扒开腿做| www.久久久久| 亚洲xxxx18| 欧美电影电视剧在线观看| 久久亚洲春色中文字幕| x99av成人免费| 午夜精品久久久久久久白皮肤| 国产精品美乳一区二区免费| 国产精品对白刺激| 国产日韩欧美视频在线| 欧美成人黄色小视频| 97在线看福利| 国产精品91久久| 中文字幕久热精品视频在线| 亚洲精品国产拍免费91在线| 91精品国产亚洲| 国产福利视频一区| 久久福利视频导航| 高清在线视频日韩欧美| 欧美黄色片在线观看| 久久精品国产2020观看福利| 欧美—级a级欧美特级ar全黄| 国产欧美精品在线播放| 91免费精品国偷自产在线| 亚洲黄页视频免费观看| 欧美福利小视频| 日韩国产欧美精品在线| 91在线视频导航| 亚洲а∨天堂久久精品9966| 久久亚洲精品一区二区| 国产成人精品综合久久久| 中文日韩电影网站| 亚洲xxxx做受欧美| 国产精品欧美风情| 91久久在线视频| 精品偷拍一区二区三区在线看| 国产日产久久高清欧美一区| 久久久久久香蕉网| 国产大片精品免费永久看nba| 欧美精品一区二区三区国产精品| 日韩av不卡在线| 亚洲一区二区免费在线| 国产精品大陆在线观看| 俺去了亚洲欧美日韩| 亚洲国产精品女人久久久| 亚洲免费影视第一页| 亚洲欧美一区二区三区情侣bbw| 日韩欧美精品免费在线| 日韩av在线免费播放| 亚洲国产欧美在线成人app| 2023亚洲男人天堂| 91精品久久久久久久久久| 午夜剧场成人观在线视频免费观看| 亚洲欧美在线一区| 亚洲娇小xxxx欧美娇小| 欧美日韩国产影院| 欧美视频免费在线观看| 欧美激情第1页| 久久久久久这里只有精品| 久久久久五月天| 97久久超碰福利国产精品…| 欧美性受xxxx黑人猛交| 亚洲综合第一页| 51ⅴ精品国产91久久久久久| 91免费欧美精品| 97人洗澡人人免费公开视频碰碰碰| 成人亚洲综合色就1024| 亚洲人精品午夜在线观看| 亚洲免费人成在线视频观看| 久久精品电影网站| 国产亚洲美女精品久久久| 欧美性猛交丰臀xxxxx网站| 91色视频在线观看| 久久夜色精品国产亚洲aⅴ| 亚洲美女动态图120秒| 精品人伦一区二区三区蜜桃网站| 精品国产999| 亚洲男人第一av网站| 亚洲欧美日韩精品久久| 中文字幕精品一区二区精品| 午夜精品久久久久久久久久久久| 自拍偷拍亚洲区| 国产一区二区三区免费视频| 久久青草精品视频免费观看| 亚洲xxxx视频| 91色视频在线观看| 96pao国产成视频永久免费| 亚洲夜晚福利在线观看| 欧美激情按摩在线| 国产精品综合久久久| 国产精品亚洲综合天堂夜夜| 欧美亚洲视频在线观看| 欧美野外wwwxxx| 欧美亚洲另类在线| 亚洲自拍偷拍色片视频| 国产欧美va欧美va香蕉在线| 精品一区二区电影| 亚洲欧洲av一区二区| 国产精品久久久久久久久久新婚|