面向過程就是分析出解決問題所需要的步驟,然后用函數(shù)把這些步驟逐一實(shí)現(xiàn),使用的時候依次調(diào)用就可以了。
站在用戶的角度思考問題,與客戶深入溝通,找到內(nèi)黃網(wǎng)站設(shè)計(jì)與內(nèi)黃網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋內(nèi)黃地區(qū)。
面向?qū)ο缶褪前褬?gòu)成問題的事物按照一定規(guī)則劃分為多個獨(dú)立的對象,然后通過調(diào)用對象的方法來解決問題。
(1)封裝性:封裝性是面向?qū)ο蟮暮诵乃枷?,有兩層含義,一層含義是指吧對象的屬性和行為看成是一個密不可分的整體,將這兩者“封裝”在一起(即封裝在對象中);另一層含義是指“信息隱藏”,將不想讓外界知道的信息隱藏起來。
(2)繼承性:繼承性主要描述的是類與類之間的關(guān)系,通過繼承,可以在無需重新編寫原有類的情況下,對原有類的功能進(jìn)行拓展。
(3)多態(tài)性:多態(tài)性是指在一個類中定義的屬性和方法被其他類繼承后,他們可以具有 不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為,這使得同一個屬性和方法在不同的類中具有不同的語義。
在java中,類與對象是最基本、最重要的單元。類表示某類群體的一些抽象基本特征,對象表示一個個具體的事物。
例如:學(xué)生可以是個類,而具體的一名學(xué)生,就可以稱為對象。這名具體的學(xué)生會有自己的姓名和年齡等信息,這些信息在面向?qū)ο蟮母拍钪蟹Q為屬性;學(xué)生可以看書和打籃球,而看書和打籃球這些行為在類中就稱為方法。
類是java中一個重要的引用數(shù)據(jù)類型,所有的java程序都是基于類的。
類是對象的抽象,用于描述一組對象的共同特征和行為。類中可以定義成員變量和成員方法,其中,成員變量用于描述對象的特征,成員變量也被稱為對象的屬性;成員方法用于描述對象的行為,可簡稱為方法。
類的定義格式如下:
class 類名{
成員變量;
成員方法;
}
在java中,定義在類中的變量稱為成員變量,定義在方法中的變量稱為局部變量。如果在某一個方法中定義的局部變量與成員變量同名,這種情況是允許的,此時,在方法中通過變量名訪問到的是局部變量而非成員變量。
在java程序的類中,想要使用一個類則必須要有對象。在java程序中可以使用“new 關(guān)鍵字”創(chuàng)建對象,具體格式如下:
類名 對象名稱 = null;
對象名稱 = new 類名 ();
具體實(shí)現(xiàn)的圖示如下:
從上圖可以看出,對象名稱uu(也就是Student類型變量uu)保存在棧內(nèi)存中,而對象的屬性信息則保存在對應(yīng)的堆內(nèi)存中
(即0x0001是地址值,不存儲在棧內(nèi)存中,它指向堆內(nèi)存中0x0001的地址)
當(dāng)我們創(chuàng)建完對象后(即Student uu = new Student;)可以使用對象訪問類中的某個屬性或方法,對象屬性和方法的訪問通過“.”運(yùn)算符實(shí)現(xiàn),具體格式如下:
對象名稱.屬性名
對象名稱.方法名
下面我舉一個例子進(jìn)行介紹:
package com.sdbi.hang;
class Student {
String name;//聲明姓名的屬性
void read() {
System.out.println("大家好,我是" + name);
}
}
public class example {
public static void main(String[] args) {
Student uu1 = new Student();//創(chuàng)建第一個Student對象
Student uu2 = new Student();//創(chuàng)建第一個Student對象
uu1.name = "小明";//為uu1對象的name屬性賦值
uu1.read();//調(diào)用對象的方法
uu2.name = "小花";//與上文一樣
uu2.read();
}
}
運(yùn)行結(jié)果如圖:
從上圖可以看出,程序分別實(shí)例化了兩個Student對象uu1和uu2,分別指向其各自的堆內(nèi)存空間(內(nèi)存地址)
類屬于引用數(shù)據(jù)類型,引用數(shù)據(jù)類型就是指內(nèi)存空間可以同時被多個棧內(nèi)存引用。下面我用一個例子來說明對象的引用傳遞。
package com.sdbi.hang;
class Student {
String name;//聲明姓名的屬性
int age;//聲明年齡屬性
void read() {
System.out.println("大家好,我是" + name + "年齡" + age);
}
}
public class example {
public static void main(String[] args) {
Student uu1 = new Student();//聲明uu1對象并實(shí)例化
Student uu2 = null;//聲明uu2對象,但不對其進(jìn)行實(shí)例化
uu2 = uu1;//uu1給uu2分配空間使用權(quán)
uu1.name = "小明";//為uu1對象的name屬性賦值
uu1.age = 20;//定義uu1年齡20歲
uu2.age = 40;//定義uu2年齡40歲
uu1.read();//調(diào)用對象的方法
uu2.read();
}
}
運(yùn)行的結(jié)果如下圖所示:
通過這張圖片發(fā)現(xiàn),兩個對象輸出的內(nèi)容是一樣的,這是因?yàn)閡u2對象獲得了uu1對象的堆內(nèi)存空間使用權(quán)。其實(shí)就是對uu1的age屬性賦值20之后,過對uu2的age屬性賦值40,之后uu2的值把uu1的值覆蓋掉,所以輸出是40。
實(shí)際上所謂的引用傳遞,就是將一個堆內(nèi)存空間的使用權(quán)給多個棧內(nèi)存空間使用,每個棧內(nèi)存空間都可以修改堆內(nèi)存空間的內(nèi)容,運(yùn)行結(jié)果圖的分析如下:
從以上的四幅圖中可以發(fā)現(xiàn)堆內(nèi)存、棧內(nèi)存空間的變化,在程序的最后,uu2對象將age的值修改為50,因此最終結(jié)果uu1的age屬性值是50。
針對類、成員方法和屬性,java提供了四種訪問控制權(quán)限。這四個訪問權(quán)限由小到大依次是:
下面具體介紹一下控制權(quán)限
封裝可以被認(rèn)為是一個保護(hù)屏障,防止本類的代碼和數(shù)據(jù)被外部程序隨機(jī)訪問。所以需要封裝。
類的封裝是指將對象的狀態(tài)信息隱藏在對象內(nèi)部,不允許外部程序直接訪問對象的內(nèi)部信息,而是通過該類提供的方法實(shí)現(xiàn)對內(nèi)部信息的操作訪問。
我們在java中實(shí)例化一個對象后,,如果要為這個對象的屬性賦值,必須通過直接訪問對象的屬性或調(diào)用setter方法才可以實(shí)現(xiàn),如果需要在實(shí)例化對象時為這個對象的屬性賦值,可以通過構(gòu)造方法來實(shí)現(xiàn)。(構(gòu)造方法也稱為構(gòu)造器)
構(gòu)造方法是一個特殊的成員方法,在定義時需注意一下幾點(diǎn)
在一個類中可以定義多個構(gòu)造方法,只要每個構(gòu)造方法的參數(shù)類型不同或參數(shù)個數(shù)不同即可。在創(chuàng)建對象時,可以通過調(diào)用不同的構(gòu)造方法為不同的屬性賦值。
在java中的每個類都至少有一個構(gòu)造方法,如果在一個類中沒有定義構(gòu)造方法,系統(tǒng)會自動為這個類創(chuàng)建一個默認(rèn)的構(gòu)造方法,這個默認(rèn)的構(gòu)造方法沒有參數(shù),方法體中沒有任何代碼。
通常構(gòu)造方法使用public修飾。
在一個類中,當(dāng)成員變量與局部變量重名時,需要使用到this關(guān)鍵字分辨成員變量與局部變量,java中的this關(guān)鍵字語法比較靈活,主要作用有三點(diǎn)
簡單來說代碼塊就是用{}括起來的一段代碼。代碼塊具體可以分為四種,分別是:
在定義一個類時,只是在描述某事物的特征和行為,并沒有產(chǎn)生具體的數(shù)據(jù)。只有通過new關(guān)鍵字創(chuàng)建該類的勢力對象時,柴夔開辟棧內(nèi)存和堆內(nèi)存,在堆內(nèi)存中么個對象會有自己的屬性。如果希望某些屬性被所有對象共享,就必須將其聲明為static屬性。如果屬性使用了static關(guān)鍵字進(jìn)行修飾,則該屬性可以直接使用類名稱進(jìn)行調(diào)用。
如果在java程序中使用static修飾屬性,則該屬性稱為靜態(tài)屬性(也稱為全局屬性),經(jīng)驗(yàn)屬性可以使用類名直接訪問,訪問格式如下:
類名。屬性名
static掛年至只能修飾成員變量,不能修飾局部變量,否則編譯器會報(bào)錯。
如果想要使用類中的成員方法,就需要先將這個類實(shí)例化,而在實(shí)際開發(fā)時,如果想不創(chuàng)建對象的情況下,通過類名就可以直接調(diào)用某個方法,要實(shí)現(xiàn)這樣的效果,只需要在成員方法前加上static關(guān)鍵字,使用static關(guān)鍵字修飾的方法通常稱為靜態(tài)方法。
靜態(tài)方法只能訪問靜態(tài)成員,因?yàn)榉庆o態(tài)成員需要先創(chuàng)建對選哪個才能訪問,即隨著對象的創(chuàng)建,非靜態(tài)成員才會被分配內(nèi)存。而靜態(tài)方法在被調(diào)用時可以不創(chuàng)建任何對象。
用static關(guān)鍵字修飾的代碼塊稱為靜態(tài)代碼塊。當(dāng)類被加載時,靜態(tài)代碼塊會之星,由于類只加載一次,因此靜態(tài)代碼塊只執(zhí)行一次。通常使用靜態(tài)代碼塊對類的成團(tuán)變量進(jìn)行初始化。