這是一個程序員的自我修養,一個學術者的自我探索,一個大神的養成之道。
1
抽象類和接口的區別
答:
抽象類:
1)抽象方法,只有概念沒有具體的行為,用abstract關鍵字裝飾,沒有方法體,子類必須重寫這些方法。
2)包含抽象方法的類一定是抽象類
3)抽象類只能被繼承,一個類只能繼承一個抽象類
接口:
1)方法都是抽象方法,屬性都是常量
2)不能實例化,可以定義常量
3)接口變量可以引用具體實現類的實例
4)接口只能被實現,一個具體類實現接口,要實現其全部抽象方法
5)接口之間可以多實現
6)一個具體類可以實現多個接口,從而實現多繼承
2
列舉線程同步的方法:
答:
1)wait()方法:讓線程等待,將線程裝到線程池中
2)notify()方法:喚醒等待的線程,喚醒線程池中的第一個,讓被喚醒的線程處于臨時阻塞狀態
3)notifyAll()方法:喚醒全部等待線程,線程池中所有線程都被喚醒
3
equals()和==的區別,重寫equals()方法是還要重寫哪些方法,為什么?
答:
==比較的是地址和棧中的內容;
eqauls()比較的是值,堆中的值是否一樣。
要重寫hashcode()方法,因為比較的時候是比較的哈希值。