對面向物件的一些理解
1.面向物件思想
什麼是面向物件?
對比於面向過程,是一種處理問題的角度不同。
面向過程顧名思義注重處理問題的每一個步驟及順序,
面向物件則更注重問題有哪些參與者,他們都需要做什麼,在解決問題時,再對他們需要做的事情進行呼叫;
比如:洗衣機洗衣服
面向過程:把一系列步驟(函式)拆解,1.開啟洗衣機---->2.放衣服---->3.放洗衣粉------>4.清洗-------->5.烘乾
面向物件:會找到這個事務的兩個參與者(物件),人,洗衣機;
人:開啟洗衣機,放衣服,放洗衣粉;
洗衣機:清洗,烘乾;
從上述例子來看,面向過程更加直接高效,而面向更易於複用,擴充套件,維護和合作開發;
封裝
封裝就是明確標識,告訴外部可以被允許使用哪些資料或者方法,因此你只需要用這些資料和方法,不需要知道底層是怎麼實現的;
比如:
-
實體類(javabean)中,它向外提供get,set方法以供外部對其資料的修改或訪問,而這個其中的操作只能由實體類自己本身決定,而不能由外部胡亂修改。
-
orm框架中mybatis操作資料庫,我們不需連線是如何建立的,sql是怎麼執行的,只需要引入mybatis,呼叫方法就可以了
從上述例子來看,封裝使得編碼更加模組化,也就是分工更明確,每個人只要管好自己的模組,別人的模組只要拿來用就可以了,還有就是封裝具有安全性,就是不讓別人隨意修改其中屬性,像是把年齡修改成負數,把生日修改為2050年之類的不合理的事情發生,這些規則應該由自己來決定。
繼承
繼承就是繼承父類的方法,進行自己的改變,擴充套件,而父類的東西可以得到保留,不需要自己定義,使得複用性;
而繼承、相似的類放到一起繼承一個父類,更好管理,維護性更高 ;
而java所有的類都是繼承了object類,都繼承了object的一些特性。
多型
多型就是不同的子類重寫了父類的方法,展現出了不同的效果。
比如:
- 動物類中發出叫聲方法,狗繼承動物類後重寫該方法為“汪汪”的叫,而貓則為“喵喵”的叫
從上述可以看到,多型使得程式碼的拓展性更高
綜上所述
面向物件為犧牲了一些效能,而換取了程式碼的複用性,可維護性,拓展性,使得工程更好管理,更易於開發。