Java類和對象的概念


Java是一門面向對象的編程語言,理解Java學習>>>,首先要理解類與對象這兩個概念。

Java中的類可以看做C語言中結構體的升級版。結構體是一種構造數據類型,可以包含不同的成員(變量),每個成員的數據類型可以不一樣;可以通過結構體來定義結構體變量,每個變量擁有相同的性質。

例如:

#include<stdio.h>

intmain(){

// 定義結構體 Student

struct Student{

// 結構體包含的變量

char*name;

intage;

floatscore;

};

// 通過結構體來定義變量

struct Studentstu1;

// 操作結構體的成員

stu1.name="小明";

stu1.age=15;

stu1.score=92.5;

 

printf("%s的年齡是 %d,成績是 %f\n",stu1.name,stu1.age,stu1.score);

return0;

}

運行結果:

小明的年齡是 15,成績是 92.500000

 

Java中的類也是一種構造數據類型,但是進行了一些擴展,類的成員不但可以是變量,還可以是函數;通過類定義出來的變量也有特定的稱呼,叫做“對象”。例如:

publicclass Demo{

publicstaticvoidmain(String[]args){

// 定義類Student

class Student{// 通過class關鍵字類定義類

// 類包含的變量

String name;

intage;

floatscore;

// 類包含的函數

voidsay(){

System.out.println(name+"的年齡是 "+age+",成績是 "+score);

}

}

// 通過類來定義變量,即創建對象

Student stu1=newStudent();// 必須使用new關鍵字

// 操作類的成員

stu1.name="小明";

stu1.age=15;

stu1.score=92.5f;

stu1.say();

}

}

運行結果:

小明的年齡是 15,成績是 92.5

 

在C語言中,通過結構體名稱就可以完成結構體變量的定義,並分配內存空間;但是在Java中,僅僅通過類來定義變量不會分配內存空間,必須使用new關鍵字來完成內存空間的分配。

 

可以將類比喻成圖紙,對象比喻成零件,圖紙說明了零件的參數及其承擔的任務;一張圖紙可以生產出具有相同性質的零件,不同圖紙可以生產不同類型的零件。

在Java中,使用new關鍵字,就可以通過類來創建對象,即將圖紙生產成零件,這個過程叫做類的實例化,因此也稱對象是類的一個實例。

 

注意:類只是一張圖紙,起到說明的作用,不占用內存空間;對象才是具體的零件,要有地方來存放,才會占用內存空間。

類所包含的變量和函數都有特定的稱呼,變量被稱為屬性(通常也稱成員變量),函數被稱為方法,屬性和方法統稱為類的成員。

 

面向對象編程(Object Oriented Programming, OOP)

類是一個通用的概念,Java、C++、C#、PHP等很多編程語言中都有類,都可以通過類創建對象。可以將類看做是結構體的升級版,C語言的晚輩們看到了C語言的不足,嘗試加以改善,繼承了結構體的思想,並進行了升級,讓程序員在開發或擴展大中型項目時更加容易。

因為Java、C++等語言都支持類和對象,所以使用這些語言編寫程序也被稱為面向對象編程,這些語言也被稱為面向對象的編程語言。C語言因為不支持類和對象的概念,被稱為面向過程的編程語言。

實際上,面向對象只是面向過程的升級。

在C語言中,可以將完成某個功能的重復使用的代碼塊定義為函數,將具有一類功能的函數聲明在一個頭文件中,不同類型的函數聲明在不同的頭文件,以便對函數進行更好的管理,方便編寫和調用。

在Java中,可以將完成某個功能的代碼塊定義為方法,將具有相似功能的方法定義在一個類中,也就是定義在一個源文件中(因為一個源文件只能包含一個公共的類),多個源文件可以位於一個文件夾,這個文件夾有特定的稱呼,叫做包。


圖1  C語言中項目的組織結構

 


圖2  Java中項目的組織結構

 

面向對象編程在軟件執行效率上絕對沒有任何優勢,它的主要目的是方便程序員組織和管理代碼,快速梳理編程思路,帶來編程思想上的革新。

 

課程預告:別再亂花冤枉錢! Java從菜鳥到架構師自學精通!


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM