1. 程式人生 > >水文-介面和抽象類有什麼不同

水文-介面和抽象類有什麼不同

面試的時候被問,介面和抽象類有什麼區別?當時問就懵逼了,回答得不好,所以被pass了。

今天再想起來這個問題,就記錄一下。

介面:我回答說,介面,就是對一類行為的歸類。抽象類:我回答說,對一類物體的抽象。

嗯,其實自己理解得還是不夠。事後想想,自己為啥不舉個栗子呢。

例如,人類,這就是一個抽象類啊,因為還有很多人種啊,有亞洲人,歐洲人,非洲人等。實體(某某某)和另一個實體(某某某Z)在膚色,毛髮之間肯定有差異的,而這些膚色,毛髮等就是人的屬性了嘛。

那麼,吃飯,是一個介面啊,對吧?好像這個不怎麼精確,因為,人如果不會吃飯的話,很難生存下來的。所以,吃飯應該是抽象類的一個虛方法,有人吃大米,有人吃麵包,有人吃shit?哦,說錯。反正,這個虛方法每個子類都可以重寫。還有吃飯的時候,用筷子還是刀叉(用刀叉吃大米?國外人吃晚飯也可以叫吃飯吧?)

那,換個。煮飯,是一個介面了吧,畢竟不是人人都會煮飯啊。會煮飯的實體(某某某)就是繼承,並實現了這個介面。當然,你煮飯是煮米飯還是煎牛排,這個就是介面的屬性了。

 

那麼問題來了,我要是當場舉了這麼一個例子,面試官會不會還是把我PASS呢?