面向對象
理解:
面向對象思想就好比你想蓋一棟房子,你可以自己買材料,自己砌磚,自己搞裝修。你也可以找一個建築公司,讓他們幫你把房子建好。前一種方法就是面向過程的思想,後一種就是面向對象的思想。總結就是:當遇到問題時,首先考慮誰有解決該問題的方法,通過調用該方法,解決問題。
重要經驗:誰擁有數據,誰就提供對外操作這些數據的方法。
特點:
可以將複雜的事情簡單化,將程序員從執行者轉換成了指揮者。完成需求時,先要去找具有所需的功能的對象來用,如果對象不存在,那麼就創建一個所需功能的對象。這樣就簡化了開發並提高了功能複用性。
特徵:
封裝(encapsulation)
繼承(inheritcmce)
多態(polymorphism)
類與對象的關係:
類:是一組相同屬性行爲的對象的抽象。
對象:即該類事物實實在在存在的個體。
例:人就是一個類(把每一個相同屬性行爲的對象進行抽取),
人的屬性:姓名、年齡、身高、體重、等。
人的行爲:吃飯、睡覺、說話、走路、等。
對象的創建:
java中是通過new關鍵字來創建實體的。
類的定義:
生活中描述事物無非是描述事物的屬性和行爲。
java中用類class描述事物也是如此。
屬性:對應類中的成員變量。
行爲:對於類中的成員函數。
成員變量的局部變量的區別:
1、作用範圍:
成員變量:定義在類中,作用於整個類。
局部變量:只在他所屬的局部大括號中有效。如函數上的參數,函數上的變 量。
2、存儲情況:
成員變量:存儲在堆內存中,隨着對象的存在而存在,當對象變成垃圾時被 回收時,該對象中的成員變量也會消失。
局部變量:存儲在棧內存中,當方法被調用或者語句被執行時才存在,當方 法運行完畢或者語句運行完畢時,局部變量被自動釋放。
3、初始化情況:
成員變量:在堆內存中有默認初始化值。
局部變量:必須手動初始化後,纔可以被調用。
創建對象實例:
//對Car這類事物進行描述
class Car {
String color = "red";
int num = 4;
void show(){
int num = 100;
System.out.println("color="+color+"..num="+num);
}
}
class CarDemo {
public static void main(String[] args) {
Car c = new Car(); //建立對象
c.color = "black"; //對對象的屬性進行修改
c.show(); //使用對象的功能。
}
}
//創建對象在內存中的詳細步驟
1,主函數進棧,給類類型變量c分配空間
2,在堆內存中開闢空間,分配內存地址
3,在堆內存中建立對象特有屬性,並進行默認初始化
4,對屬性進行顯示初始化
5,將內存地址賦給棧內存中的c變量
封裝
概念:是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。
好處:將變化隔離,便於使用提高代碼重用性和安全性。
原則:將不需要對外提供的內容都隱藏起來,提供對外公共方法對其訪問。
關鍵字:private(私有)
是一個權限修飾符;
用於修飾成員(成員函數的成員變量);
被私有化的成員只在本類中有效。
注:私有僅僅是封裝的一種體現形式而已。
關鍵字:this(本類的引用)
哪個對象在調用this所在的函數,this就代表哪個對象。
構造函數:
特點:方法名必須和類名相同;
沒有返回值類型,也不能定義void,在方法名前不聲明類型;
可以定義多個構造方法,也就是說,構造方法可以重載;
不能被人員所調用。
細節:如果在定義類時,沒有定義構造方法,編譯系統會自動插入一個無參的默認 構造方法,該構造方法不執行任何代碼。
作用:如果我們想改變系統的默認初始化,想讓系統創建對象時就爲該對象個屬性 顯示指定初始化值,就可以通過構造方法來實現。
局部代碼塊(定義在方法裏)
如: void show () {
{
xxxxxx……
}
}
作用:限定變量生命週期
構造化塊塊\初始化塊(定義在類裏)
如: class Demo() {
{
xxxxx……
}
}
作用:把共同屬性一起初始化,而且是優先構造函數之前執行。