java面試總結(1)之面向對象

1.如何理解面向對象(OOP)編程思想?

我理解的面向對象:把現實世界中的一類事物或一種行爲抽象成爲編程語言中的一個實體(類),然後操作這個類的各個對象的編程思想稱爲面向對象編程思想。

面向對象的特徵:

封裝:隱藏屬性和具體實現過程,只向調用者暴露接口來操作對象的行爲稱爲封裝

繼承    子類自動共享父類的所有非私有屬性和成員方法的特徵

多態    父類引用指向子類對象的特徵稱爲多態

面向對象和麪向過程的區別:

關於這個問題,似乎誰都明白,但又似乎沒有一個人能把他說清楚,就如同什麼是面向對象一樣,誰都能說兩句,但沒有誰能說的讓人眼前一亮的感覺,那麼我也來,說兩句

面向對象是對各個定義好的具備各種功能或者行爲的對象的整合(或分工),最後完成一個程序

面向過程是按照既定的步驟去執行每一步操作,最後完成一個程序

面向對象編程軟件的出現是爲了解決面向過程編程軟件在後期的腫脹而導致的無法再維護,目前來看有效果,但還不明顯,不明顯的根本就是,對面向對象的理解還是不夠透徹

2.接口和抽象類的區別?

首先從java設計層面來區別:
接口是對某種行爲的規範,抽象類是對某種行爲共性的東西的模板化定義
即在定義一個規範的時候,首先使用接口定義,如果在實現該接口方法的過程中,發現某個或多個接口方法的實現都差不多相同,那麼可以提取出來成爲一個抽象類
該接口的其他實現類,不需要聲明實現接口,只需要繼承上述抽象類,然後去實現未被抽象類實現過的方法即可
那麼我們會問,直接去掉接口規範,只保留一個抽象類,豈不是完全可以替代接口了
不是的,如果你需要定義一個和抽象類中實現的方法不同的實現,那麼還是會要用到接口的,這就是抽象類不能取代接口的原因

然後從java編程層面來區別:
接口中只能是抽象方法
接口中定義的屬性只能是靜態常量

接口不能定義構造方法,抽象類可以定義構造(只能被子類super,不能用來實例化)

3.override和overload的區別?

java語言中存在方法重載和方法重寫兩種方式

重載:方法的聲明相同,參數列表不同,與返回值無關,與異常無關

重寫:發生在子類與父類之間的子類覆蓋父類的方法的過程


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