標籤:否則 步驟 改變 組合 可見度 org 檢查 計算 理解
物件導向基礎 物件導向的特徵是:封裝、繼承和多態
物件導向設計三部曲:
1)發現類、類定義了對象將會擁有的特徵(屬性)和行為(方法)
2)發現類的屬性,對象所擁有的靜態特徵在類中表示時稱為類的屬性
3)發現類的方法,對象執行的操作稱為類的方法
1、定義類的文法格式:[存取修飾詞] class類名{};
存取修飾詞有public和private等,類名首字母大寫 類的屬性:對象所擁有的特徵在類中表示時稱為類的屬性
2、定義屬性的文法格式如下:[存取修飾詞]資料類型屬性名稱;
存取修飾詞是可選的 對象執行操作的方法稱為類的方法,eg人有工作的方法,工作就是"人"類的一個方法,"人"類還有很多方法,如吃喝睡覺等
3、定義方法的文法格式:[存取修飾詞]傳回型別方法名稱(參數類型 參數名1,參數類型 參數名2){ }
分析: a\存取修飾詞是可選的 b\傳回型別可以是void的,在定義方法時,傳回型別為void時表明沒有傳回值,方法中不必使用return返回具體資料,但是可以使用return關鍵字退出 c\傳回型別如果不是void,那麼一定要使用return返回對應類型的結果,否則程式會出現編譯錯誤 d\小括弧中的“參數類型 參數名1,參數類型 參數名2......"稱為參數列表" e\當需要在方法執行的時候為方法傳遞參數時才需要參數列表,如果不需要參數就可以省略,不過小括弧不可以省略,傳遞多個參數時,以半形的逗號進行分隔
建立和使用對象
類的對象可以調用類中的成員,如屬性和方法等
1、建立對象的文法格式:類名對象名=new類名(); a\new是關鍵字 b\左邊的類名為對象的資料類型 c\右邊的類名稱為類的阿構造方法 2 使用對象,要引用對象的屬性和方法要用“.”,使用對象的文法格式如下:
對象名.屬性//引用對象的屬性; 對象名.方法()//引用對象的方法
3、物件導向的優點:
1)與人類的思維習慣一樣:物件導向的思維模式是從人類考慮問題的角度出發,把人類解決問題的思維過程轉變為程式能夠理解的過程,物件導向程式設計使用"類"來類比現實世界中的抽象概念,用"對象"來類比現實世界中實體,從而用電腦解決現實問題
2)資訊隱藏,提高了程式的可維護性和安全性:封裝實現了模組化和資訊隱藏,即將類的屬性和行為封裝在類中,這保證了對它們的修改和不會影響到其他對象,利於維護。同時,封裝使得在對象外部不能隨意訪問對象的屬性和方法,避免了外部錯誤對它的影響 ,提高了安全性
3)提高程式的可重用性:一個類可以建立多個對象執行個體,體現了重用性
類成員包括:成員方法和成員變數
成員方法
帶參數的方法
形參和實參,實參就是實際參數,調用方法時實際傳入的參數叫做實際參數,簡稱實參
方法重載是指在一個類中定義多個同名的方法,但要求每個方法具有不同的參數類型和參數個數
方法重載的特點:
1)在同一個類中 2)方法名相同
3參數的個數或者類型不同方法的傳回值不能作為判斷判斷方法之間是否構成重載的依據
方法重載的優點:方法重載其即時對原來方法的一種升級,可以根據參數的 不同,採用不同的實現方法,而且不需要編寫多個名稱,簡化了類調用方法的代碼
成員變數
類的屬性,也就是直接在類中定義的變數稱作成員變數,它定義在方法的外部 局部變數就是定義在方法中的變數
成員變數和局部變數的區別:
1範圍不同,局部變數僅限於定義它的方法,在該方法外無法訪問它。成員變數在整個類都是可見的。所有成員方法都可以使用它,如果存取權限允許,還可以在類外部使用成員變數
2初始值不同,對於成員變數,如果在類定義中沒有給它賦予初始值,Java會給它一個預設值,基礎資料型別 (Elementary Data Type)的值為0,引用資料的值為null。但是Java不會給局部變數賦予初始值,因此局部變數必須定義並賦值後使用
3在同一個方法中,不允許有同名的局部變數,在不同的方法中,可以有同名的局部變數
4局部變數可以和成員變數同名,並且在使用時,局部變數具有更高的優先順序
引用資料類型包括三種:類、數組和介面
基礎資料型別 (Elementary Data Type)(或傳遞參數時)和引用資料類型(或傳遞參數時)區別:
對於基礎資料型別 (Elementary Data Type),不同的變數會分配給不同的儲存空間,並且儲存空間中儲存的是該變數的值,賦值操作傳遞的是變數的值,改變一個變數的值不會影響到另一個變數的值對於引用資料類型,賦值把原對象的引用(記憶體位址)。傳遞給另一個引用。對數組而言,當引用一個數組名直接給另一個數組名賦值時,相當於傳遞了一個引用,此時,這兩個引用指向同一個數組,也就是指向同一個記憶體空間
構造方法:當類創造一個對象時,會自動調用該類的構造方法,構造方法分為預設構造方法和帶參的構造方法
什麼是構造方法? 文法格式:[存取修飾詞]方法名([參數列表]){}
1、構造方法沒有傳回值 2、預設構造方法沒有參數,因此參數列表可選 3、構造方法的方法名和類名相同
構造方法的主要作用是進行一些資料的初始化
構造方法重載,即在同一個類中可以定義多個重載的構造方法
this 關鍵字是對一個對象預設引用,每個執行個體方法內都有一個this引用變數,指向調用這個方法的對象
this使用舉例如下:
1調用成員變數,解決成員變數和局部變數同名的衝突
2調用成員方法
3調用重載的構造方法,只能在構造方法中使用,且必須是構造方法的第一條語句
4this只能調用執行個體變數、執行個體方法和構造方法
5不能調用類變數和類方法,也不能調用局部變數
封裝的實質就是將類的狀態資訊隱藏在類的內部,不允許外部程式直接存取,而是通過該類提供的方法實現對隱藏資訊的操作和訪問
封裝有效避免了外部錯誤對此對象的影響,並且能對對象使用者由於大意產生的錯誤操作起到預防作用,同樣物件導向編程提倡對象之間實現松耦合關係。封裝的好處在於隱藏類的實現細節,讓使用者只能通過程式員規定的方法訪問資料,可以方便加入儲存控制符,來限制不合理操作。
松耦合就是指盡量減少對象之間的關聯性,以降低它們之間的複雜性和依賴性
封裝的步驟:
第一步:修改屬性的可見度(將public修改為private後,其他類就無法訪問了,如果訪問則需要進行封裝的第二 步)
第二步:設定setter/getter()方法,用source-setter/getter或者Ctrl+Shift+S由系統添加
第三部:設定屬性的存取限制,對屬性值設定合法性檢查,需要在setter方法中進一步利用條件判斷語句進行賦值限制
包機制也是封裝的一種形式
它的作用主要有三方面:一包允許將類組合成最小的單元(類似檔案夾),易於找到和使用相應的類檔案。二防止命名衝突,Java中只有在不同包中的類才能重新命名。類命名相同在所難免,有了包,類名就容易管理了。A定義了一個類Sort,封裝在包A中,B定義了一個類Sort,封裝在包B中。通過包名區分開A和B分別定義的Sort,如用A.Sort和B.Sort分別對應於A和B定義的Sort類。三包允許在更廣的範圍內保護類、資料和方法。根據訪問規則,包外的代碼有可能不能訪問該類
定義包的文法格式如下:package包名
1、package是關鍵字
2、包的聲明必須是Java源檔案中第一條非注釋性語句,而且源檔案只能有一個包聲明語句,設計的包需要與檔案系統結構相對應。
包命名遵守以下編碼規範:
1、一個唯一的包名首碼通常是全部小寫ASCII字母,並且是一個頂級網域名稱com\edu\gov\net及org,通常使用組織的網路網域名稱的逆序。eg:如果網域名稱為javagroup.net,可以聲明包為:"package net.javagroup.mypackage;"
2、包名的後續部分依不同機構各自內部的規則不同而不同
聲明包的含義是生命嗎當前類所在的包;匯入包的含義是聲明在當前類中要使用到的其他類所在的包
類和類成員的存取控制 1、類的存取修飾詞有public和預設修飾符,區別預設修飾符在非同一包中不可以使用 2、類成員的存取修飾詞private、預設修飾符、protected和public區別:
1)private只有在同一個類中可以使用,在同一個包中、子類中和其他地方不可以使用
2)預設修飾符在同一個類中和同一個包中都可以使用,子類中和其他地方不可以使用
3)protected在同一個類中、同一個包中、子類中都可以使用,其他地方不可以使用
4)public在同一個類中、同一個包中、子類中、其他地方都可以使用
3、用static關鍵字修飾屬性,稱為靜態變數或者類變數,沒有使用static修飾的屬性
4、用static關鍵字修飾方法
用static修飾的方法稱為靜態方法或者類方法,不用static關鍵字修飾的方法稱為執行個體方法或者叫成員方法
static和非static的區別:
static中屬性稱為類變數或者靜態變數,方法稱為類方法或者靜態方法,屬性載入順序:類載入的時候就會執行,方法載入順序:被調用的時候才執行,所屬:屬於類 ,調用:對象名和操作符,可以修飾屬性、方法和代碼塊 非static中屬性稱為成員變數或者執行個體變數,方法稱為成員方法或執行個體方法,屬性載入順序:建立對象(構造方法)被執行,方法載入順序:被調用的時候才執行,所屬:屬於對象 ,調用:對象名和操作符
面向基礎(知識點概括)