Java基礎狂補--抽象類和接口的區別、java到底能不能存一個漢字?

首先題外話,java的char變量能不能存儲一箇中文漢字?

答:能,但是不完全能。java中的編碼是unicode。在Java中,char的長度是2字節,即16位,2的16次方是65536。

而unicode字符集是用二進制表示的,至於用UTF8還是其它的編碼方式是另一回事。也就是說漢字中在unicode的編碼中小於65536的都可以表示。

 

抽象類和接口的相同點:

1.都不能實例化。

2.都可以作爲引用類型。

A和B分別爲一個抽象類和接口。AImpl和BImpl分別爲對應的繼承和實現。

則寫法 A a = new AImpl 和 B b = new BImpl 成立。

3.一個類如果繼承了某個抽象類或者實現某個接口,都需要對其中的抽象方法全部實現,否則依然是不可實例化的。

 

抽象類和接口的不同點:

1.抽象類可以定義構造方法,接口不行

2.抽象類中可以有抽象方法和具體方法,接口只能有抽象方法。

3.抽象類的方法可以是private、默認、protected、public,而接口只能是public

4.抽象類的成員變量可以不初始化,接口必須初始化(實際上接口的成員變量都是常量)。

這裏解釋一下,因爲接口沒有初始化方法。所以無法通過自身行爲去修改屬性。而如果作爲被實現類調用修改,或者說變量是靜態變量,可以A.x = xxx,這樣實現的話,則和抽象類沒有區別,無法體現接口更高的抽象。

5.抽象類中可以包含靜態方法,接口中無法包含靜態方法。

6.一個類只能實現一個抽象類,但是一個類可以實現多個接口。


PS:有抽象方法的類必須聲明爲抽象類,而抽象類未必要有抽象方法。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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