什麼是面向對象?面向過程?
無論面向過程還是面向對象都是一種解決問題的一種方式。
java是面向對象的語言。c面向過程。
面向過程與面向對象區別
面向過程注重的是動作的執行,而面向對象的思維方式它注重的是實體,我們只要找到實體,
關賦予實體動作,當想要去完成操作時,只要找到這些實體就可以。
面向對象的思維方式將複雜事情簡單化。
將我們程序由原來的執行者變成了控制者。
面向對象示例
1.人開門
分析:找到名詞,名詞一般都會將其抽象成實體。找到動詞,動詞一般都是動作
實體:人門
動作:開 應該是門的。
當前動作賦予給誰取決於這個動作那個實體完成會更容易或更方便。
2.人扇扇子。
實體: 人 扇子
動作: 扇 應該是扇子。
3.人使用ATM存取款與查看帳戶。
實體: 人 ATM
動作: 存 取 查 (這些行爲都是ATM)
開發的過程:其實就是不斷的創建對象,使用對象,指揮對象做事情。
設計的過程:其實就是在管理和維護對象之間的關係。
什麼是類? 什麼是對象?它們之間的關係
在對一類事物進行歸納時從兩點入手:
1.外在特徵外形,外貌
2.動作,功能,特有的行爲。
對事物進行總結得到一個抽象的概念,那麼這個概念我們就叫它爲類。
對象是某個具體的實體.
類是對象的抽象,而對象是類的具體化(實例化)
在實際開發中大部分情況下都是先有類,在根據類實例化出對象
怎樣去定義類,類的成員有哪些
定義類:
class類名{
}
類的組成部分:屬性,方法
class 類名{
成員屬性
成員方法
}
class 人{
String姓名;
int年齡;
void吃(){
}
}
定義對象與對象的使用
格式: 類名引用名=new類名();
怎樣使用對象調用屬性:1.使用.操作符2.引用名(對象).屬性3.引用名(對象).方法()
同一個類的對象,它們具有相同的成員屬性,但是成員屬性的值可能不同。
調用的是哪個對象的成員屬性就得到這個對象的成員屬性。
New關鍵字相當於在堆內存中開闢空間。當對象創建時,它的屬性有默認值,當我們通過.操作符對其進行操作時就爲其屬性重新賦值。
匿名對象:它是一個對象,但是它只能使用一次,所有通過匿名對象操作屬性沒意義
什麼時候使用匿名對象
1.只調用方法一次
2.可以將匿名對象做爲參數進行傳遞.
成員變量與局部變量區別
成員變量:它是聲明在類中的變量
局部變量:它是聲明在方法內的,或者是聲明在方法內的流程語句中。
區別:
1.作用範圍: 成員變量在整個類內有效,而局部變量只在其方法內或流程語句中有效
2.初始值: 成員變量如果沒有對其進行初始化,會對其進行默認初始化。
局部變量必須初始化才能使用。
3.生命週期:成員變量生命週期是與對象的生命周其一致 局部變量使用完成後就消失。
4.創建的位置:成員變量在堆內存中 局部變量在棧內存中。
封裝:是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。
private私有的它是一個修飾符,可以修飾成員屬性與成員方法
封裝的好處1.將變化隔離。2.便於使用。3.提高重用性。4.提高安全性。
封裝原則:1.將不需要對外提供的內容都隱藏起來。2.把屬性都隱藏,提供公共方法對其訪問。
我們在使用時,一般是將成員屬性private,對外提供getXxx() setXxx()方法
set方法是應該有參數的,它是用來接收信息進行賦值
get方法是有返回值班的,它的作用是讓外部可以訪問我們的成員屬性。
命名規範:
1.類名 首字母大小,多個單詞組成後面的單詞首字母也要大寫
2.變量名首字母小寫,如果多個單詞組成後面的也要大寫。
3.方法名 首字母小寫,如果多個單詞組成後面的也要大寫。
class Student
{
privateint id;
privateString name;
privateint age;
//賦值操作
void setAge(inta){
age=a;
}
voidsetId(int i){
id=i;
}
voidsetName(String n){
name=n;
}
//提供一個取值的操作
intgetId(){
returnid;
}
StringgetName(){
returnname;
}
intgetAge(){
returnage;
}
}
構造方法(函數)
1.構造方法的作用
初始化對象
類名引用名=new構造方法();
2.構造方法的格式
1.構造方法的名字必須與類名相同。
2.構造方法不能有修飾符(權限除外 public private )
3.構造方法沒有返回值類型 void也沒有。
3.構造方法的注意事項
1.如果一個類沒構造方法,那麼當它加載時, jvm會爲其分配一個默認的空的無參構造方法
但是如果我們手動去創建了一個構造方法,那麼默認的就不會在創建。
2.構造方法是用來創建對象的,我們程序員不能手動調用構造方法。
3.構造方法也可以重載。好處是可以通過多種途徑去實例化類的對象。
構造方法帶參數的目的:是可以在創建對象的過程中就對對象的屬性進行賦值操作。
以後在開發中使用別人寫的類時,就需要查看其提供什麼樣的構造方法,才能通過構造方法實例化對象去使用。
局部代碼塊與構造代碼塊(瞭解)
{代碼塊 }
局部代碼塊:聲明在方法內的代碼塊
構造代碼塊:聲明在類中的。
作用:
局部代碼塊:限定變量的生命週期.
構造代碼塊:它是隻要構造方法執行,它就會執行,並且優先與構造方法執行.
它的作用:可以將所有構造方法內都要執行的內容抽取出來放入到構造代碼塊中。
this指代本類對象
它是用來區分局部變量與成員變量的。
this出現的位置
1.構造方法.代表是當前構造正在創建的對象。
2.成員方法.代表是調用這個方法的對象