《Java語言程序設計(基礎篇)》讀書筆記(五)

《Java語言程序設計(基礎篇)》讀書筆記(五)
作者:wangzz
轉載請註明出處
如果覺得文章對你有所幫助,請通過留言或關注微信公衆帳號wangzzstrive來支持我,謝謝!

第十四章 抽象類和接口
1、抽象類
簡單的說,包含了抽象方法的類叫作抽象類。抽象類的聲明方式如下:
public abstract class AbstractClassName {
  //構造方法,定義爲protected類型
  protected AbstractClassName() {
  }
  //非抽象方法
  public void method1 { 
  }
  //抽象方法
  public abstract int method2 {
  }
}
抽象類具有以下特點:
不能創建抽象類的實例對象;
②一個包含抽象方法的類必須聲明爲抽象類;
抽象類的構造方法要定義爲protected類型,因爲它只被子類使用;

2、接口
接口是一種特殊的類,在很多方面都和抽象類很像。接口聲明方式如下所示:
public interface Edible {
  public abstract String howToEat();
}
接口聲明使用的關鍵字是interface。使用接口的方式如下:
public class Apple implements Edible {
  public String howToEat() {
    return "Apple:Make apple cider";
  }
}
繼承接口使用的關鍵字是implements。
說明:
由於接口中所有的數據域都是publec final static類型,所有的方法都是public abstract類型,所以Java允許忽略這些修飾符,下面的接口定義是等價的:
public interface T {
  public static final int K = 1;
  public abstract void p();
}
等價於:
public interface T {
  int K = 1;
  void p();
}
②接口內定義的常量由於都是public static類型的,因此可以使用語法“接口名.常量名”(例如,T.K)來訪問。

3、接口和抽象類
相同點:
①本質上都是特殊的類;
②都不能被實例化。
③由於包含抽象方法的類都是抽象類,因此如果一個類繼承了抽象類或者擴展了一個接口,它就必須實現抽象類或者接口中的所有抽象方法
不同點:
①在變量和方法上的區別,如下圖所示:


Java只允許單繼承類,但是允許多重繼承接口
③接口只能擴展接口,但是類既能擴展接口又能擴展類;
④接口沒有共同的跟,但所有的類都共享同一個跟類Object;
接口表示事物具有的能力或行爲,這些事物可以不屬於同一類型,類表示同一類型的事物具有的屬性
⑥接口名可以是形容詞或者名詞,但類名只能是名詞。

第十五章 圖形
主要講了Java中的畫圖方法,不是我想了解的重點,暫時飄過。

第十六章 事件驅動程序設計
1、源對象
能創建一個事件並觸發該事件的組件成爲源對象。

2、事件類
事件類的跟類是java.util.EventObject,一些事件類的層次結構如下圖所示:


每個源對象可能可以觸發不同的事件類型,而源對象針對每個事件都維護這一個註冊的監聽器列表

3、內部類
內部類又叫嵌套類,是定義在另一個類的範圍內的類,語法格式如下所示:
public class Test {
  ...
  //Inner class
  public class InnerClassName {
    ...
  }
}
通常,如果內部類只是被外部類使用,那就將該類定義成內部類,內部類具有以下特點:
①內部類會被編譯成一個名爲OuterClassName&InnerClassName.class的類;
內部類可以引用定義在它嵌套的外部類中的數據和方法
內部類可以看成外部類一個特殊的數據成員,在使用可見性修飾符定義內部類時,遵從和類成員一樣的可見性規則;
④內部類的對象常在其外部類中創建,但也可以從另一個類中創建一個內部類對象,如果內部類是靜態的,可以使用下面的語法:
OutClass.InnerClass innerObject = new OuterClass.InnerClass();
如果內部類是非靜態的,可以使用下面的語法:
OutClass.InnerClass innerObject = outerObject.new InnerClass();

內部類的作用:
①將從屬類合併到主類中,可以減少源文件的數量,也可以使類文件便於組織;
②避免類命名衝突。

4、匿名內部類
匿名內部類是沒有名字的內部類,它一步完成定義內部類和創建一個該類的實例。通常可以使用匿名內部類簡化內部類監聽器。
匿名內部類的語法如下:
new SuperClassName/InterfaceName {
  //Implement or override methods of superclass or interface
  //Other methods if necessary
}
匿名內部類有以下特點:
①匿名內部類必須總是擴展父類或者實現接口,但不能有顯式的extends或者implements子句;
②同所有非抽象子類一樣,匿名內部類必須實現父類或接口中的所有抽象方法;
匿名內部類總是使用它的父類的無參構造方法來創建實例,如果匿名內部類實現了接口,構造方法就是Object()
④匿名內部類被編譯成一個名爲OuterClassName&n.class的類。例如,如果外部類Test有兩個匿名內部類,它們就被編譯爲Test&1.class和Test&2.class。

第十七章 創建圖形用戶界面
主要講述了幾種控件的使用,在此略過。

未完待續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章