《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。
第十七章 創建圖形用戶界面
主要講述了幾種控件的使用,在此略過。
未完待續。。。