在講解面向對象之前,我們得解決一個問題,什么是對象?
對象,從字面意思來看就是我們面對的物象。于此我們便可以知道,萬事萬物皆為對象。比如:一臺電腦,一輛汽車,一部手機等等都是對象。
面向對象,從字面意思來看就是我們人面對著一個對象。其實就是指我們從這個對象的整體出發去看它,它由哪些部件組成,它可以做到哪些事情。
比如:我們想要買一部手機,我們想要內存大一點的,最新款的,CPU 運算快一點的,能實現發短信和打電話功能的手機。那么這部手機是不是對象呢?它不是。當我們買了一部 iphone 6 后,它滿足我們上面的所有信息。于是我們拿在手上的這部 iphone 6 就是我們的對象。于是我們知道,對象一定是一個具體的,確定的物體。
而這部手機它的樣式,顏色,大小,產地,編號等等,便是這部手機的“屬性”,這部手機可以打電話、發短信,便是它的“行為”。
面向對象的思想,體現的是人所關注對象的信息聚集在了一個具體的物體上。人們就是通過對象的屬性和行為來了解對象?! ?/p>
對于一個具體的對象而言,比如上面我們說的那一部 iphone 6,世上還有許多跟這部手機有著同樣屬性或行為的對象,我們為了方便將它們歸類起來,提取出他們相同的屬性和行為,而我們把歸類起來的這個抽象的概念,稱之為類。
比如:每個人就是一個對象,小張是一個對象,小明是一個對象。而每個人雖然不同,但卻有許多相同的屬性和行為,于是我們可以他們抽象出來,變成一個類,比如人類。
類是封裝對象的屬性和行為的載體,反過來說具有相同屬性和行為的一類實體被稱為類。
由此我們可以總結出類的特點:
1. 類是相同或相似對象的一種抽象,是對象的一種類型
2. 類是具有相同屬性和方法(行為)的對象的集合
我們在上面反復強調對象的屬性和行為,什么是對象的屬性呢?什么又是對象的行為呢?
屬性是對象具有的特征。每個對象的每個屬性都擁有特定值。我們上面講過對象是一個具體并且確定的事物,正是對象屬性的值來區分不同的對象,比如我們可以通過一個人的外貌特征區分他。
那什么是對象的行為呢?在計算機中我們通過方法去實現對象的行為,而對象的方法便是對象所具有的操作,比如人會走路、會哭泣、會學習等等都是人的行為,也就是人的方法?! ?/p>
類和對象之間有什么關系嗎?在上面的講解中大家應該有些了解了。類就是對象的抽象,對象就是類的具體。比如手機是一個抽象的概念,它代表著類。而一部 iphone 6 便是手機具象化處理的實體,也就是一個對象?! ?/p>
說了那么多,那我們如何在計算機中定義一個類,如何實現一個類呢?我們以前說過,java 是面向對象的語言,而他的體現就在于Java程序都以類 class為組織單元。而一個類是對象的抽象,所以類由屬性和方法兩部分組成。
定義一個類,主要有三個步驟:
1、定義類名,用于區分不同的類。如下代碼中 public class 后面跟的就是類名。class
是我們聲明類的關鍵字,類名后面跟上大括號,大括號里面就是我們類的一些信息。
public class 類名{//定義屬性部分(成員變量)屬性1的類型 屬性1;屬性2的類型 屬性2;...//定義方法部分方法1;方法2;...} 2、編寫類的屬性。對象有什么,我們通過屬性來表示。屬性的定義我們是寫在類名后面的大括號里,在定義屬性時,要明確屬性的類型。在一個類當中可以寫一個或多個屬性。當然也可以不定義屬性。
3、編寫類的方法。方法也是寫在大括號里面。我們可以定義一個方法或多個方法,當然也可以不定義方法。
舉例:
1、 打開 Eclipse,新建一個 Java 項目,取名為 PRoject。
2、在左側空白地方點擊右鍵新建一個Class,這便是我們的類了。填上包名( pakage )和我們的類名

3、至此我的類就創建好了,接下來就是對類填寫屬性和方法了

對象
我們要使用一個對象,首先第一步便是創建一個對象。創建對象的語法如下:
類名 對象名 = new 類名();比如對People
這個類,我想實例化LiLei
這個人。LiLie 的數據類型便是 People 這個類型。(類可以看成使我們自己定義的數據類型)
People LiLei = new People(); 我們在上一講中介紹形參和實參的時候畫了內存圖,定義類的時候是不會為類開辟內存空間的,但是一旦創建了對象,系統就會在內存中為對象開辟一塊空間,用來存放對象的屬性值和方法。

創建對象后,我們就要使用對象了,使用對象無非就是對屬性和方法進行操作和調用。語法如下
//引用對象屬性對象名.屬性//引用對象方法對象名.方法例如,我們對LiLei的身高賦值,并調用哭這個方法
LiLei.height = 170;LiLei.cry();舉例:

接下來就是在主函數中創建對象,并進行相關的操作了。

剛剛我們引入了成員變量這個概念,那什么是成員變量呢?成員變量就是指的對象的屬性,是在類中定義,來描述對象的特性。還有一種變量叫局部變量,它是由類的方法定義,在方法中臨時保存數據。

注意:我們的成員變量可以被本類的所有方法所使用,同時可以被與本類有關的其他類(比如:繼承該類的類)所使用。而我們的局部變量只能在當前的方法中使用。
作用域可以簡單地理解為變量的生存期或者作用范圍,也就是變量從定義開始到什么時候消亡。
1. 局部變量的作用域僅限于定義它的方法內。而成員變量的作用域在整個類內部都是可見的。
2. 同時在相同的方法中,不能有同名的局部變量;在不同的方法中,可以有同名的局部變量。
3. 成員變量和局部變量同名時,局部變量具有更高的優先級。
構造方法
在面向對象中有一個非常重要的知識點,就是構造方法。我們只前在創建一個對象的時候類名 對象名 = new 類名();
通過new
關鍵字將類實例化成對象,而new
后面跟的并不是我們的類名,而是與類名相同的一個方法,這個方法便是構造方法。于是可以知道new + 構造方法
可以創建一個新的對象,而構造方法是定義在 Java 中的用來初始化對象的方法。
1、 構造方法的名稱與類名相同,且沒有返回值。它的語法格式如下:
//與類同名,可以指定參數,沒有返回值public 構造方法名(){//初始化代碼}例如:
package com.shiyanlou;public class People {//屬性(成員變量)有什么 double height; //身高 int age; //年齡 boolean sex; //性別,true為男性,false為女性 //構造函數,初始化了所有屬性 public People(double h, int a, boolean s){ height = h; age = a; sex = s; }}//創建對象,調用我們自己定義的有參構造方法People XiaoMing = new People(168, 21, false); 2、如果我們在定義類的時候沒有寫構造方法,系統會默認給我們生成一個無參構造方法,不過這個構造方法什么也不會做。
3、當有指定的構造方法時,系統都不會再為我們添加無參構造方法了。
4、構造方法的重載:方法名相同,但參數不同的多個方法,調用時會自動根據不同的參數選擇相應的方法。
新聞熱點
疑難解答