05.面向對象,封裝,static final
阿新 • • 發佈:2019-03-25
object類 具體實現 計數 true 參數 lan spell 聚合 匿名 (匿名類對象,在使用的時候,可以不進行賦值,直接鏈式編程 new Person("張三",18).tell(); 使用一次就會成為垃圾。) 格式 : xx類 變量 = new xx類名 ([實參]); 構建對象並接收對象; 類是對象的類型 , 對象是類的實例,一個類可以創建N多個對象;小問題:如果一個不同包下有同名的類,請使用包名加類名調用,不同包先導包。包名加類名是唯一身份標識. 首先如何封裝一個標準類,類是多個具有同樣屬性的聚合。1:嘗試定義一個模板,這個模板應該具有一類對象的共性,模板是對一類對象的特性抽離,當歸納成類以後嘗試用代碼去實現共性,從而定義一個類。2:當類創建完畢以後,這個類就具有了包含此類對象的屬性,這樣我們就可以使用類模板去產生對象,對象可以是無數個,也可以各式各樣。如何合理的封裝一個標準類,一個標準類應該包含什麽。 new關鍵字就是構造方法的一種實現,每個定義類都會默認給一個無參構造器,但是如果我們自己定義了有參構造器,系統不會再給你無參構造器,同時用new調用無參構造器,也會報錯。1.一個類肯定會有構造方法,2.構造方法為啥不用void,因為定義了void就和普通方法一樣了,構造方法是實例化對象用的,普通方法是實例化對象後用的。所以不行,public Hello(){}3.構造方法重載,考慮參數的,個數,類型,順序不重要,原因在於,無論怎樣賦值都是這些屬性,但是順序不同不報錯,只不過輸入時候要按照定義過的構造順序賦值
4. 修飾局部變量 只要值確定了 那麽值永不可變 也叫做常量 final 修飾基本數據類型變量 , 其值永不可變 final 修飾引用數據類型變量 , 其引用地址永不可變 , 但是地址指向的對象本身可變 .
面向對象
面向對象首先是一種思維方式的體現,其特點就是分工化操作,將功能封裝起來,達到運用對象處理事務的目的。面向對象在JAVA中的體現:封裝,繼承,多態 ,組合類與對象的關系
在JAVA中萬物皆是對象,每個對象都應該是獨一無二的,是一種類實例化的體現,我們將對象分類,就變成了類,類是一類對象的共性。類:具有一定的屬性,和共同特性的集合。是對對象共性的抽離。對象:是對類模板的具體實例化。方法:面對過過程的體現,實現功能的語句。定義一個類:抽離對象共性,屬性就是成員變量,成員方法就是能力。創建對象: 格式 new 構造器名( [實參] ); 構造器名==類名封裝
封裝:封裝是為了防止,類中數據被外界訪問,被篡改。提高程序的安全性,隱藏內部“細節”,提供對外操作的“接口”。對內部數據進行保護的同時 , 還可以自定義設置對象屬性值。1:屬性
- 合適的類型,合適的名字,駝峰,
- 屬性私有化,private,讓本類可以訪問,別的類使用公共的設定器,訪問器來訪問,和設定。
- 只聲明不賦值,除非是共有的static屬性。盡量在對象實例化時候才進行賦值。
2:構造器 註意系統贈送問題
構造器的名字始終和類名相同,它的作用是讓一個新的對象產生的操作,是一種構造的過程,修飾符類名(行參列表){};構造方法是一個特殊的方法,不需要返回值,也不用返回值類型。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 1static int count =2019;
2int ID= count++;
3這種方法就要,不給set id 而且構造器不能有id的
訪問靜態屬性時有兩種方式
1. 類名.靜態屬性名 (推薦) 2. 對象.靜態屬性名 (不推薦)Static修飾成員方法:靜態方法不依附於對象,是屬於類的。本類中的靜態方法可以直接使用。不用類名點調用。但是編譯期間會自動編譯,是等效的。靜態方法只能調用用靜態屬性和方法。非靜態可以使用靜態的。因為不依附於對象。
Static修飾代碼塊:Static{ } 執行本類時候,只執行一次,在最開始加載。靜態代碼塊比構造方法先執行,多個對象創建也執行一次。用途:一次性的為靜態成員變量賦值。
靜態方法和變量不能直接調用非靜態的方法變量。因為靜態的優先加載,永久存在,不依附於對象。同樣也不能調用this.原因同上。構造塊(代碼塊)比構造器早,
final 關鍵字
final 意為最終的不變的 , 在java中它是修飾符 , 它修飾的成員都是最終的不變的 。作用 :
1. 修飾類 最終的類,無法再派生子類 ; (斷子絕孫) 該類無法被繼承 例如 String 2. 修飾方法 最終的方法(無法重寫) 該方法無法被重寫 3. 修飾屬性(成員變量) final 修飾基本數據類型屬性 , 其值永不可變 final 修飾引用數據類型屬性 ,其引用地址永不可變 , 但是地址指向的對象本身可變 final 修飾的屬性必須在聲明時就賦值 否則 , 必須在每個構造器中 都對其進行賦值 一定要保證 final 修飾的屬性 在對象創建之後必定有值 , 並且只有一個值 ;4. 修飾局部變量 只要值確定了 那麽值永不可變 也叫做常量 final 修飾基本數據類型變量 , 其值永不可變 final 修飾引用數據類型變量 , 其引用地址永不可變 , 但是地址指向的對象本身可變 .
05.面向對象,封裝,static final