Java知多少(7)類與對象

來源:互聯網
上載者:User

標籤:

Java是一門物件導向的程式設計語言,理解Java,首先要理解類與對象這兩個概念。

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

 1 #include <stdio.h> 2 int main(){ 3 // 定義結構體 Student 4 struct Student{ 5 // 結構體包含的變數 6 char *name; 7 int age; 8 float score; 9 };10 // 通過結構體來定義變數11 struct Student stu1;12 // 操作結構體的成員13 stu1.name = "小明";14 stu1.age = 15;15 stu1.score = 92.5;16 printf("%s的年齡是 %d,成績是 %f\n", stu1.name, stu1.age, stu1.score);17 return 0;18 }

運行結果:

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

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

 1 public class Demo { 2 public static void main(String[] args){ 3 // 定義類Student 4 class Student{ // 通過class關鍵字類定義類 5 // 類包含的變數 6 String name; 7 int age; 8 float score; 9 // 類包含的函數10 void say(){11 System.out.println( name + "的年齡是 " + age + ",成績是 " + score );12 }13 }14 // 通過類來定義變數,即建立對象15 Student stu1 = new Student(); // 必須使用new關鍵字16 // 操作類的成員17 stu1.name = "小明";18 stu1.age = 15;19 stu1.score = 92.5f;20 stu1.say();21 }22 }

運行結果:
小明的年齡是 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知多少(1)語言概述

Java知多少(2)虛擬機器(JVM)以及跨平台原理

Java知多少(3) 就業方向

Java知多少(4)J2SE、J2EE、J2ME的區別

Java知多少(5) Java開發環境的搭建

Java知多少(6)第一個程式樣本

Java知多少(7)類與對象

Java知多少(7)類與對象

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.