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

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

Java編程思想讀書筆記(第5-7章)二

2019-11-18 10:41:57
字體:
來源:轉載
供稿:網友

  第6章  重復運用classes
  
  一.繼續(inheritance)
  
  1.  在derived class中overriding某個函數時,只能覆寫base class中的接口,即base class中的public或PRotected或friendly函數。假如試圖overriding一個private函數,雖然編譯通過,但實際上你只是在derived class中添加了一個函數。如
  
  class Cleanser{
  private void prt(){//(b)
  Java/lang/System.java.Html" target="_blank">System.out.println("Cleanser.prt()");
  }
  }
  public class EXPlicitStatic extends Cleanser{
  public void prt(){
  java/lang/System.java.html" target="_blank">System.out.println("ExplicitStatic.prt()");
  }
  public static void main(java/lang/String.java.html" target="_blank">String[] args){
  Cleanser x = new ExplicitStatic();
  x.prt();//(a)
  }
  }
  
  因為Cleanser中的prt()是private,所以不能在其derived class中被覆寫。ExplicitStatic中的prt()只是ExplicitStatic中的一個函數,所以當試圖在(a)處通過多態來調用prt()時,會發生錯誤。假如把(b)處的private去掉,則結果為
  
  ExplicitStatic.prt()
  
  2.  Super的使用
  
  1)通過要害字super可以調用當前class的superclass(父類)。
  例6.1.1.1
  
  class Base{
  Base(){java/lang/System.java.html" target="_blank">System.out.println("Base()");}
  public void scrub() { java/lang/System.java.html" target="_blank">System.out.println(" Base.scrub()"); }
  }
  class Cleanser extends Base{
  private java/lang/String.java.html" target="_blank">String s = new java/lang/String.java.html" target="_blank">String("Cleanser");
  public void append(java/lang/String.java.html" target="_blank">String a) { s+=a; }
  public void dilute() { append(" dilute()"); }
  public void apply() { append(" apply()"); }
  public void scrub() { append(" scrub()"); }
  public void print() { java/lang/System.java.html" target="_blank">System.out.println(s); }
  Cleanser(){
  java/lang/System.java.html" target="_blank">System.out.println("Cleanser(): " + s);
  }
  public static void testStatic(){
  java/lang/System.java.html" target="_blank">System.out.println("testStatic()");
  }
  public static void main(java/lang/String.java.html" target="_blank">String[] args){
  Cleanser x = new Cleanser();
  x.dilute(); x.apply(); x.scrub(); x.print();
  }
  }
  public class ExplicitStatic extends Cleanser{
  ExplicitStatic(){
  java/lang/System.java.html" target="_blank">System.out.println("ExplicitStatic()");
  }
  public void scrub(){
  append(" Detergen.scrub()");
  super.testStatic();
  super.scrub();//調用的是Cleanser.scrub()
  }
  public void foam() { append(" foam()"); }
  public static void main(java/lang/String.java.html" target="_blank">String[] args){
  ExplicitStatic x = new ExplicitStatic();
  x.dilute(); x.apply(); x.scrub(); x.foam();
  x.print(); java/lang/System.java.html" target="_blank">System.out.println("Test base class:");
  Cleanser.main(args);
  testStatic();
  }
  }
  
  運行結果:
  Base()
  Cleanser(): Cleanser
  ExplicitStatic()
  testStatic()
  Cleanser dilute() apply() Detergen.scrub() scrub() foam()
  Test base class:
  Base()
  Cleanser(): Cleanser
  Cleanser dilute() apply() scrub()
  testStatic()
  2)通過super來調用superclass中的成員時,調用的是最近成員。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 革吉县| 平顺县| 伊通| 广州市| 洪雅县| 柳州市| 天祝| 宁波市| 岢岚县| 长岛县| 九江县| 宜州市| 德江县| 双城市| 马山县| 精河县| 沈阳市| 东海县| 永川市| 山丹县| 镶黄旗| 景宁| 通江县| 江陵县| 苏尼特左旗| 霍城县| 阳春市| 汨罗市| 灵石县| 太谷县| 宁化县| 吉木乃县| 营口市| 台江县| 海淀区| 凤山市| 高邑县| 桂林市| 介休市| 荆州市| 长春市|