構造器
new關鍵字做的事情:1.在堆中為對象開辟空間,成員變量會跟隨對象進入到堆內存并附默認值2.調用構造器為對象初始化信息3.將地址返回給引用
構造器|構造方法|構造函數:
就是特殊的方法
?
使用:
必須只能跟隨new關鍵字使用
作用:
只能new關鍵字才能創建對象,構造器只能為對象初始化信息(就是為對象的成員變量賦值) ,不能創建對象
定義:
修飾符 類名(){
}
構造器不需要定義返回值和void
可以定義return,但是不需要return帶出返回值

?
一個類中如果沒有顯示定義構造器,編譯器會自動會我們提供一個空構造
如果有顯示定義構造器,編譯器不會為我們提供任何空構造
方法具有重載的特性,構造器也可以重載
重載構造器的調用使用,根據new對象后的()匹配參數列表
?
注意 :
自定義的模板類,都應該至少提供一個空構造
this關鍵字
this 關鍵字指代當前new對象1)在構造器的首行可以調用本類中的其他構造器this(實參);注意: 一定要使用在構造器的首行才行主要不要相互調用,效果類似死循環2)區分同名變量問題成員變量與局部變量同名問題,this.調用成員,否則默認就近原則在構造器中this關鍵字指代當前new的對象在成員方法中的this,默認指代當前調用成員方法的對象如果出現同名問題,指代成員this.不能省略,如果沒有同名問題,哪有用哪個,當找到成員的時候定義靜態成員關鍵字,this.可以省略
注意: this不能使用在static修飾方法中
關鍵字
靜態的修飾變量修飾方法修飾塊修飾類
1)被static修飾的變量-->靜態變量|類變量

2)被static修飾的方法-->靜態方法|類方法
?
靜態內容的使用方式:
類名.靜態變量名
類名.靜態方法名()
引用.靜態變量名
引用.靜態方法名()
?
靜態的內容是屬于類的,可以直接跟隨類名使用,可以跟隨對象使用
成員的內容是屬于對象的,是能跟隨對象使用,現有對象才有成員
?
靜態的變量是獨一份的,在類第一次加載到內存之后就初始化,當前類多個對象共享的,在方法區中的靜態區中
在靜態的內容中,只能直接使用靜態的內容,不能直接使用成員的內容,通過對象使用成員
在成員內容中,可以直接使用靜態內容,可以直接使用成員內容

static關鍵字只能修飾成員,不能修飾局部-->成員修飾符
?
先靜態后成員
先父類后子類
block塊
塊block自成作用域 {}
普通語句塊|局部代碼塊{} : 定義在方法中 執行時機: 跟隨所在方法調用
構造塊{} : 類中方法外 執行時機: new 創建對象
靜態塊static{} : 類中方法外 執行時機: 類第一次加載
同步塊
?
構造塊代碼在構造器代碼之前執行,如果一個類中存在多個構造塊,從上到下一次執行
在類第一次加載完成之后就執行,并且只執行一次
如果一個類中存在多個靜態塊,從上到下一次執行

如果一個類中存在多個靜態內容,從上到下一次加載
?
靜態塊-->main-->構造塊-->構造器
bean
模板類
安全隱患問題:介紹一個關鍵字
私有的 ,權限修飾符
被修飾的成員只能在當前類中使用
私有的內容->配合公共訪問方式一起使用
設置器
訪問器
設置器和訪問器其實就是公共的成員方法
面向對象的三大特性:
封裝 :
隱藏內部的實現細節,對外提供公共的訪問方式
方法是封裝的體現
屬性私有化定義靜態成員關鍵字,公共的訪問方式是封裝的一個非常具體的體現
類也是封裝的體現
...
問私有是封裝,封裝是私有對么???
私有是封裝的體現
封裝不僅僅是私有
好處:
挺高代碼的復用性
提高程序的安全性
繼承
多態
注意:
以后自定義模板類,屬性都應該私有化,并提供公共的訪問方式