国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

Java二進制兼容規則:域

2019-11-18 13:20:11
字體:
來源:轉載
供稿:網友

  域和方法不同。刪除了類的一個方法后,它有可能通過繼續獲得一個具有同樣名稱、參數的不同方法,但域不能覆蓋,這使得域在二進制兼容方面的表現也有所不同。
  
  例如,假設有下面三個類:
  
  class Language {
   String greeting = "你好";
  }
  
  class German extends Language {
   String greeting = "Guten tag";
  }
  
  class French extends Language {
   String greeting = "Bon jour";
  }
  
  則“void test1() { System.out.PRintln(new French().greeting); }”的輸出結果是“Bon jour”,但是,“void test2() { System.out.println(((Language) new French()).greeting); }”的輸出結果是“你好”。這是因為,實際訪問的域依靠于實例的類型。在第一個輸出例子中,test1訪問的是一個French對象,所以輸出結果是French的問候語;但在第二個例子中,雖然實際上訪問的是一個French對象,但由于French對象已經被定型成Language對象,所以輸出結果是Language的問候語。
  
  假如把上例的Language改成下面的形式:
  
  class Language { }
  
  再次運行test2(不重新編譯),得到的結果是一個錯誤信息:java.lang.NoSUChFieldError: greeting。假如重新編譯test2,則出現編譯錯誤:cannot resolve symbol,symbol : variable greeting ,location: class Language System.out.println(((Language) new French()).greeting);。test1仍能正常運行,無需重新編譯,因為它不需要Language包含的greeting變量。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伊吾县| 乐平市| 蚌埠市| 望奎县| 清原| 蒲城县| 霍林郭勒市| 淄博市| 嘉善县| 博客| 武汉市| 乐平市| 商城县| 梁河县| 临潭县| 文安县| 溧水县| 鸡西市| 安徽省| 离岛区| 长武县| 雅江县| 吉安县| 双辽市| 克拉玛依市| 元阳县| 宁波市| 娄底市| 乌审旗| 南川市| 阿巴嘎旗| 聂拉木县| 上犹县| 青川县| 荆门市| 嘉定区| 都安| 广宁县| 屯留县| 兴安县| 沅陵县|