可以拿生活中的例項來理解面向過程與物件導向,例如五子棋。
封裝(encapsulation) 繼承(inheritance) 多型(polymorphism)
1.定義:
隱藏物件的屬性和實現細節,僅對外公開介面,控制在程式中屬性的讀取和修改的訪問級別。
2.封裝途徑4. 好處3.原則4.成員變數和區域性變數:
成員變數:
a)成員變數定義在類中,在整個類中都可以被訪問。
b) 成員變數隨著物件的建立而建立,存在於物件所在的堆記憶體中。
c) 成員變數有預設初始化值。
區域性變數:
a) 區域性變數只定義在區域性範圍內,如:函式內,語句內等。
b) 區域性變數存在於棧記憶體中。
c) 作用的範圍結束,變數空間會自動釋放。
d) 區域性變數沒有預設初始化值。
1.繼承注意:千萬不要為了獲取其他類中的功能,簡化**而繼承。必須是類與類之間有所屬關係才可以繼承。這種所屬關係的表示為is a。
2.繼承的特徵
/*描述:父類方法father有兩個方法:a和b,a方法呼叫b方法
*子類son覆蓋b方法,
*如果子類son呼叫a方法,則顯示是什麼
*/public
class
test1
}class father
void b()
}class son extends father
}
執行結果:
說明:這裡的例子說明了類的覆蓋,son類其實是繼承了father類的a方法,那麼,b方法被覆蓋後,自然呼叫的是覆蓋後的方法。
super的使用和this的使用幾乎一致,且兩者都存在於方法區中。
this表示本來物件的引用。
super表示父類物件的引用。
1、子類覆蓋父類,必須保證子類許可權大於等於父類許可權,才可以覆蓋,否則編譯失敗。
2、靜態只能覆蓋靜態。
3、父類中的私有方法不能被重寫。
小知識點:
過載:只看同名函式的引數列表。
重寫:子父類方法要一模一樣。
初始化順序:為什麼子類一定要訪問父類中的建構函式?
建構函式結論:
多型也叫動態繫結、後期繫結或執行時繫結。
多型有兩種表現形式:過載和覆蓋
1.覆蓋
//多型的體現
public
class
test1
}//父類
class father
//方法b
void b()
}//子類son1
class son1 extends father
}//子類son2
說明:b方法被子類son1和son2覆蓋重寫,子類的不同物件的呼叫體現了不同的使用。
2.過載
標識乙個函式除了函式名外,還有函式的引數(個數和型別)。也就是說,乙個類中可以有兩個或更多的函式,叫同乙個名字而他們的引數不同。
//加法器,實現整數和小數加法,需要過載方法
public
class
test2
}class math
//加法方法傳參為double型
void add(double a, double b)
}
結果:
方法的過載和類的方法覆蓋組成了多型。
Java基礎 物件導向
1.理解物件導向 強調的是功能行為 將功能封裝進物件,強調具備了功能的物件。1.1 物件導向的好處 先要去找具有所需的功能的物件來用。如果該物件不存在,那麼建立乙個具有所需功能的物件。這樣簡化開發並提高復用。1.2 物件導向開發,設計,特徵 開發的過程 其實就是不斷的建立物件,使用物件,指揮物件做事...
java基礎 物件導向
面向過程的思想 一步一步去實現,而具體的每一步都需要我們去實現和操作,這些步驟相互協作完成我們的需求 面向思想 將步驟和功能進行封裝,用的時候,找對應的類 物件導向不關注過程 物件導向就相當於指揮者 面向過程相當於員工 物件導向是基於面向過程 特點 是一種更符合人們思考習慣的思想。可以將複雜的事情簡...
Java物件導向基礎
把具有共同特點和行為的東西封裝成乙個個物件。例項化類 建立物件 使用物件的屬性或方法。物件儲存在jvm的堆記憶體中,物件的識別符號 引用值儲存在棧記憶體 儲存了物件在堆記憶體中的位址。class的許可權修飾符只可以用public和default public class classname 成員方法...