------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------
Java基礎知識
一、封裝
A:封裝的引入
通過學生案例,給年齡賦值爲負數引出數據問題。
然後通過private解決這個問題。最後說其實這就是封裝。
B:封裝概述
是指隱藏對象的屬性和實現細節,僅對外提供公共訪問方式。
C:封裝好處
隱藏實現細節,提供公共的訪問方式。類,方法等其實都是封裝的具體體現。
提高了代碼的複用性
提高安全性。
D:封裝原則
將不需要對外提供的內容都隱藏起來。
把屬性隱藏,提供公共方法對其訪問。
E:常見的應用
類中的所有成員變量私有,給出對應的get/set方法。
F:代碼實現:
class
Student{
private String name;
private int age;
public Student(){}
public Student(String name,int age){
this.name = name;
this.age = age;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}
二、private this static關鍵字
A:private關鍵字的概述和特點
1) private關鍵字特點
a:是一個權限修飾符
b:可以修飾成員變量和成員方法
c:被其修飾的成員只能在本類中被訪問
2) private最常見的應用
(1):把成員變量用private修飾
(2):提供對應的getXxx()和setXxx()方法
B:this關鍵字的概述和應用
A:爲什麼要有this
當我們的局部變量和成員變量相同的時候,如果我們不使用this關鍵字,那麼會導致一個問題:就是局部變量隱藏了 成員變量的問題
B:this關鍵字特點
是一個關鍵字,代表當前類的對象引用。
簡單記:在方法中,哪個對象調用方法,this就代表誰。
C:this的應用場景
解決局部變量隱藏成員變量問題。
在構造方法中調用其他的構造方法(必須寫在第一行) this();
在其他方法中可以使用this.普通方法名()調用普通方法 this.eat();
C:static關鍵字
1)概述
是一個關鍵字。可以修飾成員變量和成員方法。
2)靜態的特點
a:隨着類的加載而加載
b:優先於對象存在
c:被類的所有對象共享
d:可以通過類名調用
3)靜態的注意事項
a:在靜態方法中是沒有this關鍵字的。
b:靜態方法只能訪問靜態的成員變量和靜態的成員方法。
4)靜態內容的調用
a:被對象調用
b:被類名調用
5)什麼時候該用static
如果某個內容是所有對象共享的,就用靜態修飾。
例如:
水杯和飲水機。
廁所和人。
老師和學生。
三、繼承(extends)
A: 概述:
把多個類中的相同的屬性和行爲進行抽取,封裝到一個類中,
然後再建立新類的時候,不需要從頭做起,繼承剛纔定義的那個類即可。
B:好處:
a:提高代碼的複用性。
b:讓類與類之間產生了一個關係,是多態的前提。
C:什麼時候使用繼承
a:如果類之間存在着: is a 的關係,就可以考慮使用繼承。
b:不要爲了繼承部分功能,而去使用繼承。
D:繼承的特點:
a:Java只支持單繼承,不支持多繼承。
如果支持多繼承,就會有調用不明確的問題。
b:Java支持多層(重)繼承。也就是說java中的接口支持多繼承
E:super和this的區別
a:super是一個關鍵字,代表父類的存儲空間標識。(可以理解爲父親對象的引用)
b:它和this的用法相似
1:成員變量
this.變量--本類的
super.變量--父類的
2:構造方法
this(...)--本類的
super(...)--父類的
3:成員方法
this.方法名()--本類的
super.方法名()--父類的
F:子父類中成員變量的用法:
a:名稱不同,這個太簡單了。
b:名稱相同,子類對象的在使用的時候:
先找子類局部範圍
再找子類成員範圍
最後找父類成員範圍
父類的父類成員範圍
G:子父類中成員方法的用法:
a:名稱不同,這個太簡單了。
b:名稱相同,子類對象的在使用的時候:
先找子類的
再找父類的
c:方法重寫
在子類中,方法聲明(修飾符,返回值,方法名,參數列表)相同的情況。
注意事項:
1:父類中私有方法是不能被重寫
2:子類方法的訪問權限一定要大於等於父類的訪問權限
3:靜態只能重寫靜態。(這個不能算,因爲靜態跟類相關)
H:子父類中構造方法的用法:
a:子類的初始化過程中,首先回去執行父類的初始化動作。
因爲子類的構造方法中默認有一個super()。
爲什麼?子類要使用父類的成員變量,這個初始化,必須在子類初始化之前完成。
所以,子類的初始化過程中,會先執行父類的初始化。
b:如果父類沒有無參構造方法
1:使用super調用父類的帶參構造。推薦方式。
2:使用this調用本身的其他構造。
(1)執行順序:
靜態代碼塊 --> 構造代碼塊 --> 構造方法
默認初始化>顯式初始化>構造代碼塊初始化>構造方法初始化
(2)注意事項:
靜態代碼塊只執行一次
四、面向對象小結
A:創建對象時的執行動作:
棧內存開闢空間存儲引用變量
使用new創建內存空間
調用構造方法
成員變量默認初始化
成員變量顯示初始化
構造函數初始化
對象創建結束,將地址賦值給引用變量
1:定義類
私有成員屬性
至少一個空參的構造方法
普通方法
公共的get/set方法通常手動放在最後
2;使用類創建對象
定義引用類型變量用來引用對象
使用new關鍵字與構造方法完成對象創建
在構造方法的同時對成員變量賦值
使用get/set方法操作成員變量
使用對象名.方法名(參數)調用對象函數
創建對象的過程,在這裏可以理解爲調用構造方法的過程
構造方法:
用來創建對象的方法。
在創建對象的同時,可以直接爲屬性賦值。
如果沒有手動給出構造方法,則系統會默認給出空參的構造。
構造方法特點:
函數名與類名相同,與函數名標識符命名原則相悖
不進行返回值類型的定義
構造方法沒有返回值
構造方法之間以重載的方式存在
------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流!
-------