樂字節Java編程語言發展、面向對象和類

大家好,上次我們講過了樂字節Java編程之方法、調用、重載、遞歸,接下來我們將會進入到Java封裝的內容。Java編程語言發展,面向對象和類。

一、編程語言的發展

機器語言——直接由計算機的指令組成,指令、數據、地址都以“0”和“1”組成:可以被計算機直接識別並執行。

彙編語言——用容易理解和記憶的符號表示指令、數據以及寄存器等,抽象層次很低,程序員需要考慮大量的機器細節。

高級語言——屏蔽了機器細節,提高了語言的抽象層次接近於人的自然語言,60年代出現的結構化編程語言剔除了結構化數據和語句,數據和過程抽象等概念。

面向對象的語言——與以往的各種語言的根本不同是,它的設計出發點就是爲了更能直接地描述問題域中客觀存在的事物。

語言的發展是朝着人類更容易理解的方向前進。

OOP(Object Oritented Programming)面向對象編程,屬於編程的一種通用的思想。OOP使我們的開發變得不再那麼複雜,並大大增加了程序的靈活性和擴展性。如果你尚未使用OOP思想來完善你的程序設計,那你真的OUT了。
圖片描述

代碼世界中與現實生活中一樣,社會需要分工,我們不必描述所有一切事物的製作過程,因爲有時,我們只想要這個東西,並不關心它的過程。

二、面向對象概述

2.1 面向過程的設計思想和麪向對象的設計思想

我要吃魚香肉絲蓋飯

面向過程:我買菜、我洗菜、我切菜、我放水、我點火、我做飯、我炒菜。。。。

面向對象:找家飯館,大吼一聲“我要吃魚香肉絲蓋飯”

至於飯怎麼來的我不管

所有的細節信息都封裝在這個飯館類的內部,我不需要關心裏面到底有幾道工序

面向過程就是知道一個很NB的人來完成一件事;面向對象就是指導一羣人來完成一件很NB的事。

2.2 面向對象的設計思想

面向對象的基本思想是,從現實世界中客觀存在的事物出發來構造軟件系統,並在系統的構造中儘可能運用人類的自然思維方式。

面向對象更加強調運用人類中日常的思維邏輯中經常採用的思想方法與原則,如抽象、分離、繼承、聚合、多態等。

三、對象和類的概念

對象用計算機語言對問題域中事物的描述,對象通過“屬性(attribute)”和“方法(method)”。

3.1 類

類是用於描述同一類型的對象的一個抽象的概念,類中定義了這一類對象所具有的靜態屬性和動態屬性。

類可以看成一類對象的模板,對象可以看成該類的一個具體實例。
圖片描述

類,說白了就是歸類,就是對同種事物進行抽象,抽出“像”的部分,包含有關事務(對象)動作方式的信息,包括它的名稱、屬性、方法及所在的場景或聯繫。

例子:

根據客戶的需要,我們來製作一個蛋糕。首先要有一個製作蛋糕的菜譜(類),裏面當然要有製作這個蛋糕需要什麼原材料(成員屬性),還要告訴我們如何去做(成員方法)。
圖片描述

3.2 符合Java的類

public class Cake{
public String shape; // 蛋糕的形狀
public int cream; //奶油的量
public int eggs; //雞蛋的量
public int water; //水的量
public int bakeTime; // 烤制時間
public String others; // 其他配料
// 製作
public void makeCake(){
    System.out.println(“放入” + cream + “的奶油,加入” + eggs+ “雞蛋…”);
}
}

由此可見:類就是模板,同時是複雜的數據類型

有了上述蛋糕類,還沒有擁有一個實實在在的蛋糕(對象),只有當我們照着菜譜上寫的,把原材料準備齊全,照着一步一步去做,方可得到這個蛋糕(對象的實例化)

現在我們的高級麪點師來了,他知道如何去做:只要有菜譜和材料

class Baker{
    String name;    // 名字
    public Cake makeCake(){
        Cake cake = new Cake();
        cake.shape = “麻將型”;
        cake.cream = 50;
        cake.water = 500;
        cake.eggs = 5;
        cake.bakeTime = 5;
        cake.others = “黃油、糖、水果、顏料”;
        return cake;
}
}

3.3 類(對象)之間的關係

關聯關係
圖片描述

繼承關係
圖片描述

聚合關係(整體和部分)
圖片描述

實現關係
圖片描述

多態
圖片描述

四、Java與面向對象

對象是Java程序的核心,在Java程序中“萬事萬物皆對象”。

類是用來創建同一類型的“模板”,在一個類中定義了該類對象所具有的成員變量以及方法

JDK提供了很多類供編程人員使用,編程人員也可以定義自己的類。

成員變量=屬性 方法=功能

4.1 Java類的定義

//用class關鍵字定義一個類,例如
class Person{

// 成員變量
int id;
int age = 20;
// 方法定義
int getAge(){return age;}
void setAge(int i){age = I;}

}
類的定義主要有兩方面組成——成員變量和方法

聲明成員變量的格式爲:

[<modifiers>] type <attr_name>[=defaultValue];

例如: int id; private int age = 20;

聲明方法的格式爲;

[<modifiers>] <return_type> <name> ([<argu_list>]){

[<statements>]

}

例如:public int getAge(){ return age;}

4.2 成員變量

成員變量可以使用Java語言中任何一種數據類型(包括基本類型和引用類型)

定義成員變量時可以對其初始化,如果不對其初始化,Java使用默認的值對其初始化。
圖片描述

成員變量的作用範圍爲整個類體

4.3 Java面向對象基本概念

Java語言中除基本類型之外的變量類型都稱爲引用類型

Java中的對象是通過引用對其操作的。

例如:

Dog dog;

dog = new Dog();

如何在內存中區分類和對象?

類是靜態的概念,代碼區

對象是new出來的,位於堆內存,類的每個成員變量在不同的對象中都有不同的值(除了靜態變量)而方法只有一份,執行的時候才佔用內存。

4.4 對象的創建和使用

必須使用 new 關鍵字創建對象,new做三件事:

①會在堆中爲相應類型分配空間

②會調用相應的構造方法來初始化對象

③將在堆中開闢的空間的地址返回回來

使用對象(引用).成員變量來引用對象的成員變量。

使用對象(引用).方法(參數列表)來調用對象的方法。

同一類的每個對象有不同的成員變量存儲空間。

同一類的每個對象共享該類的方法。

樂字節原創,轉載請註冊出處。

接下來,小樂會繼續講述Java構造器,引用與內存分析,敬請關注 樂字節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章