什么是面向对象?谈谈你对面向对象的理解
??面向對象和面向過程,是兩種不同的處理問題的角度。
??面向過程更注重事情的每一個步驟及順序,面向對象更注重事情有哪些參與者(對象)、及各自需要做什么。
??比如:洗衣機洗衣服
??面向過程會將任務拆解成一系列的步驟(函數),1、打開洗衣機——>2、放衣服——>3、放洗衣粉——>4、清洗——>5、烘干
??面向對象會拆出人和洗衣機兩個對象:
????人:打開洗衣服、放衣服、放洗衣粉
????洗衣機:清洗、烘干
??從以上例子能看出,面向過程比較直接高效,而面向對象更易于復用、擴展和維護。
面向對象的三大特征
封裝:封裝的意義,在于明確標識出允許外部使用的所有成員函數和數據項
內部細節對外部調用不透明,外部調用無需修改或者關心內部實現
1.javabean的屬性私有,提供getset方法對外訪問,因為屬性的賦值或者獲取邏輯只能由javabean本身決定。而不能由外部胡亂修改。
2.orm框架
操作數據庫,我們不需要關心鏈接是如何建立的、sql是如何執行的,只需要引入mybatis,調方法即可。
繼承:繼承基類的方法,并做出自己的改變和擴展。
子類共性的方法或屬性直接使用父類的,而不需要自己再定義,只需要擴展個性化的。
多態:多態是同一個行為具有多個不同表現形式或形態的能力。基于對象所屬類的不同,外部對同一個方法的調用,實際執行的邏輯不同。
多態存在的三個必要條件:繼承,方法重寫,父類引用指向子類對象
無法調用子類特有的功能
public class Test {public static void main(String[] args) {show(new Cat()); // 以 Cat 對象調用 show 方法show(new Dog()); // 以 Dog 對象調用 show 方法Animal a = new Cat(); // 向上轉型 a.eat(); // 調用的是 Cat 的 eatCat c = (Cat)a; // 向下轉型 c.work(); // 調用的是 Cat 的 work} public static void show(Animal a) {a.eat(); // 類型判斷if (a instanceof Cat) { // 貓做的事情 Cat c = (Cat)a; c.work(); } else if (a instanceof Dog) { // 狗做的事情 Dog c = (Dog)a; c.work(); } } }abstract class Animal { abstract void eat(); //Note:父類中沒有work方法 } class Cat extends Animal { public void eat() { System.out.println("吃魚"); } public void work() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨頭"); } public void work() { System.out.println("看家"); } }執行以上程序,輸出結果為:吃魚 抓老鼠 吃骨頭 看家 吃魚 抓老鼠總結
以上是生活随笔為你收集整理的什么是面向对象?谈谈你对面向对象的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于java的学生宿舍公寓管理系统
- 下一篇: Tian Ji -- The Horse