1. 程式人生 > >05.面向對象,封裝,static final

05.面向對象,封裝,static final

object類 具體實現 計數 true 參數 lan spell 聚合 匿名

面向對象

面向對象首先是一種思維方式的體現,其特點就是分工化操作,將功能封裝起來,達到運用對象處理事務的目的。面向對象在JAVA中的體現:封裝,繼承,多態 ,組合

類與對象的關系

在JAVA中萬物皆是對象,每個對象都應該是獨一無二的,是一種類實例化的體現,我們將對象分類,就變成了類,類是一類對象的共性。類:具有一定的屬性,和共同特性的集合。是對對象共性的抽離。對象:是對類模板的具體實例化。方法:面對過過程的體現,實現功能的語句。定義一個類:抽離對象共性,屬性就是成員變量,成員方法就是能力。創建對象: 格式 new 構造器名( [實參] ); 構造器名==類名
匿名類對象,在使用的時候,可以不進行賦值,直接鏈式編程 new Person("張三",18).tell(); 使用一次就會成為垃圾。 格式 : xx類 變量 = new xx類名 ([實參]); 構建對象並接收對象; 類是對象的類型 , 對象是類的實例,一個類可以創建N多個對象;小問題:如果一個不同包下有同名的類,請使用包名加類名調用,不同包先導包。包名加類名是唯一身份標識.技術分享圖片

封裝

封裝:封裝是為了防止,類中數據被外界訪問,被篡改。提高程序的安全性,隱藏內部“細節”,提供對外操作的“接口”。對內部數據進行保護的同時 , 還可以自定義設置對象屬性值。
首先如何封裝一個標準類,類是多個具有同樣屬性的聚合。1:嘗試定義一個模板,這個模板應該具有一類對象的共性,模板是對一類對象的特性抽離,當歸納成類以後嘗試用代碼去實現共性,從而定義一個類。2:當類創建完畢以後,這個類就具有了包含此類對象的屬性,這樣我們就可以使用類模板去產生對象,對象可以是無數個,也可以各式各樣。如何合理的封裝一個標準類,一個標準類應該包含什麽。

1:屬性

  1. 合適的類型,合適的名字,駝峰,
  2. 屬性私有化,private,讓本類可以訪問,別的類使用公共的設定器,訪問器來訪問,和設定。
  3. 只聲明不賦值,除非是共有的static屬性。盡量在對象實例化時候才進行賦值。

2:構造器 註意系統贈送問題

構造器的名字始終和類名相同,它的作用是讓一個新的對象產生的操作,是一種構造的過程,修飾符類名(行參列表){};構造方法是一個特殊的方法,不需要返回值,也不用返回值類型。
new關鍵字就是構造方法的一種實現,每個定義類都會默認給一個無參構造器,但是如果我們自己定義了有參構造器,系統不會再給你無參構造器,同時用new調用無參構造器,也會報錯。1.一個類肯定會有構造方法,2.構造方法為啥不用void,因為定義了void就和普通方法一樣了,構造方法是實例化對象用的,普通方法是實例化對象後用的。所以不行,public Hello(){}3.構造方法重載,考慮參數的,個數,類型,順序不重要,原因在於,無論怎樣賦值都是這些屬性,但是順序不同不報錯,只不過輸入時候要按照定義過的構造順序賦值技術分享圖片技術分享圖片

3:設定器

設定器的作用是讓外界可以用公共的設定器去改變對象的屬性,從而達到修改的目的構造方法賦值和getter setter方法賦值的區別,首先構造方法是在對象實例化時進行的賦值,setter方法是有了對象後賦值,修改時候不改變其指向還是本類對象。public void set屬性名(屬性類型;屬性名字){ this.屬性名字=屬性名字

4:訪問器 getter setter 方法的序列化,boolean類型是getter名稱是is。所以對象名字別加is,有些框架會出現問題.

訪問器的作用是讓外界有公共的訪問屬性的功能.構成public 屬性類型 get 屬性名字(){this.屬性名字|| return 屬性名字}

5:功能方法

用代碼具體實現的功能方法。任何類方法都會有一個默認的幾個方法,因為所有的類都繼承於Object類,我們要根據實際需求,重寫Object方法。

Static 關鍵字 (公共!)本身就不是最優選擇,一定要在公共屬性和回避實例化對象賦值時才用。

四大特性 : 1.優先加載.2.一旦加載永存3.不依附對象4.加載一次靜態的,靜態修飾,靜態的作用是優先加載,並且只加載一次,一次加載一直存在。對象共享的數據。一旦更改後面創建的對象都會隨之改變。Static修飾成員變量:可以變成計數器,使類屬性自動增長。不與對象有關系。公共屬性可以使用對象和類名稱點來調用
static int count =2019;
int ID= count++;
這種方法就要,不給set  id    而且構造器不能有id的
3 123

訪問靜態屬性時有兩種方式

1. 類名.靜態屬性名 (推薦) 2. 對象.靜態屬性名 (不推薦)技術分享圖片
技術分享圖片
技術分享圖片

Static修飾成員方法:靜態方法不依附於對象,是屬於類的。本類中的靜態方法可以直接使用。不用類名點調用。但是編譯期間會自動編譯,是等效的。靜態方法只能調用用靜態屬性和方法。非靜態可以使用靜態的。因為不依附於對象。

技術分享圖片技術分享圖片

Static修飾代碼塊:Static{ } 執行本類時候,只執行一次,在最開始加載。靜態代碼塊比構造方法先執行,多個對象創建也執行一次。用途:一次性的為靜態成員變量賦值。

靜態方法和變量不能直接調用非靜態的方法變量。因為靜態的優先加載,永久存在,不依附於對象。同樣也不能調用this.原因同上。技術分享圖片
技術分享圖片

構造塊(代碼塊)比構造器早,

技術分享圖片

final 關鍵字

final 意為最終的不變的 , 在java中它是修飾符 , 它修飾的成員都是最終的不變的 。

作用 :

1. 修飾類 最終的類,無法再派生子類 ; (斷子絕孫) 該類無法被繼承 例如 String 2. 修飾方法 最終的方法(無法重寫) 該方法無法被重寫 3. 修飾屬性(成員變量) final 修飾基本數據類型屬性 , 其值永不可變 final 修飾引用數據類型屬性 ,其引用地址永不可變 , 但是地址指向的對象本身可變 final 修飾的屬性必須在聲明時就賦值 否則 , 必須在每個構造器中 都對其進行賦值 一定要保證 final 修飾的屬性 在對象創建之後必定有值 , 並且只有一個值 ;
4. 修飾局部變量 只要值確定了 那麽值永不可變 也叫做常量 final 修飾基本數據類型變量 , 其值永不可變 final 修飾引用數據類型變量 , 其引用地址永不可變 , 但是地址指向的對象本身可變 .

05.面向對象,封裝,static final