1. 面向物件
1.1 什么是面向物件
面向物件是一種思想,是基于面向程序而言的,就是說面向物件是將功能等通過物件來實作,將功能封裝進物件之中,讓物件去實作具體的細節,
對比面向程序,是兩種不同的處理問題角度,
面向程序更注重事情的每一步驟和順序,而面向物件更注重事情有哪些參與者(物件)、以及各自需要做些什么,
例如:冰箱裝大象
面向程序會將任務分解成一系列的步驟(函式):
1. 打開冰箱
2. 把大象裝進去
3. 關上冰箱
面向物件會分解成兩個物件:
冰箱: 存放大象 打開冰箱 關上冰箱
大象 : 進入冰箱
從這個例子可以看出,面向程序比較直接高效,而面向物件更易于復用、擴展和維護,
1.2 面向物件三大特性
談到面向物件了就不能不談Java面向物件的三大特性了,
分別是封裝、基礎和多型,
1.2.1 封裝
封裝是一個面向物件的術語,其含義其實很簡單,就是把東西包裝起來,封裝的意義在于明確標識出允許外部使用的所有成員方法和資料,
將類的某些資訊隱藏在類的內部,不允許外部程式直接訪問,并通過該類提供的方法來實作對隱藏資訊的操作和訪問,(簡單的說就是隱藏物件的資訊,留出訪問的介面),
特點:1.只能通過規定的方法訪問資料;2.隱藏類的實體細節,方便修改和實作,
例如:
javabean的屬性私有,提供get/set方法對外訪問,因為屬性的賦值或者獲取邏輯只能由javabean本身決定,而不能由外部胡亂修改,
1.2.2 繼承
在Java中就是創建一個父類,用 extends 關鍵字繼承,
在現實中就是兒子繼承父親財產這種,
繼承可以理解為一個類從另一個類獲取方法和屬性的程序,如果類B繼承于類A,那么B就擁有A的方法和屬性,可以直接使用,
例如:
父類為狗類,有年齡、體型這些屬性,還有吃飯、睡覺等特性,
子類繼承父類的這些特性,然后進行專項訓練,訓練導盲的能力成為導盲犬,訓練追查毒品的能力成為緝毒犬,
它們都有從父類繼承下來的屬性和特性,也有后天訓練出來的專業技能,
總結:子類共性的方法或者屬性總結使用父類的,而不需要自己再定義,只需要擴展自己的個性化方法,
1.2.3 多型
什么是多型?
多型就是多種形態,在自然界中碳的多型就有石墨、鉆石等,水分子的多型就有水、冰、水蒸氣等,同一個操作,由于條件的不同,產生的結果也不同,
在Java中,就是基于物件所屬類的不同,外部對同一個方法的呼叫,實際執行邏輯不同,
想要使用多型,就要用上繼承、方法重寫,用父類參考指向子類物件,
父類物件 變數名 = new 子類物件(); 變數名.方法名();
我們在使用的時候 只需要改變子類物件,就可以實作不同的效果,實際開發中多用于介面,例如常用的資料庫操作介面,完成增刪改查等效果,
也舉一個栗子吧:
// 父類 動物類 class Animal { public void eat(){ System.out.println("吃飯"); } } //子類 狗類 class Dog extends Animal { public void eat(){ System.out.println("狗吃肉"); } public void lookDoor(){ System.out.println("狗看門"); } } //子類 貓類 class Cat extends Animal { public void eat(){ System.out.println("貓吃魚"); } public void atchingMice(){ System.out.println("貓抓老鼠"); } } class DuoTaiDemo { public static void main(String[] args) { //定義為狗 Animal animal = new Dog(); animal.eat(); // 無法呼叫子類特有功能 也就是說我們只能呼叫父類中有的方法 // animal.lookDoor(); System.out.println("-------------------------------"); // 還原成狗 Dog dog = (Dog)animal; dog.eat(); dog.lookDoor(); System.out.println("-------------------------------"); // 變成貓 animal = new Cat(); animal.eat(); System.out.println("-------------------------------"); // 還原成貓 Cat cat = (Cat)animal; cat.eat(); cat.atchingMice(); System.out.println("-------------------------------"); } }
我們無法呼叫子類特有功能

需要注意的幾個點:
不能用子類new父類,例如狗是動物,但動物不是狗,
不能用子類new子類,例如貓不是狗,狗不是貓,
左邊要是大型別,右邊是小型別,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/287998.html
標籤:其他
