說明文檔生成{
要用java生成doc,必須爲public類
說明文檔中只提供public protected成員信息
格式:/** 需要在文檔中顯示的信息 */ @param (寫上參數的信息) @return (返回值的信息)
例:
/**
獲取整型數組的最大值。
@param arr 接收一個元素爲int類型的數組。
@return 該數組的最大的元素值
*/
public static int getMax(int[] arr)
{
int maxIndex = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]>arr[maxIndex])
maxIndex = x;
}
return arr[maxIndex];
}
命令行 javadoc -d 文件名(不更換文件直接用 . ) ***.java
生成的說明文檔中可以查看到類中的除private外的所有函數,以及參數列表,
}
繼承{
作用:提高複用性,讓類之間有關係,爲多態提供前提條件
類之間只有單繼承,不直接支持多繼承,因爲有可能多個父類中有共同項產生不確定性
繼承後,子父類出現同名成員,調用的時候子類有則不去父類找
子父類函數相同,繼承後子類覆蓋了父類函數,注意:子函數權限要大於等於父函數權限,子函數爲static父函數必須爲static
構造函數{
1.構造函數不會繼承,子類構造函數的第一行爲一條默認空參數的super(),
2.super()目的是調用父類空參數的構造函數
3.父類中沒有空參數的構造函數的話就編譯失敗,解決辦法是顯示調用父類相應的構造函數
4.所有類都是繼承自object類,所以都有一個默認的空參數的構造函數,裏面有一個空參數的super()以及return語句;
5.構造函數中this()和super()只有一個
}
子類實例化過程{
子類所有構造函數都有默認父類空參數構造函數,子類繼承父類,獲取父類內容,在使用父類內容之前要先看父類是如何對自己的內容進行初始化的
class Father{
Father(){
show();
}
void show(){
System.out.println("father show ");
}
}
class Son extends Father{
int i = 8;
Son(){
super();//此時 i爲0
System.out.println("son show " + i);//此時父類構造函數初始化結束,i爲8
}
void show(){
System.out.println("son show " + i);
}
}
class Demo{
public static void main(String[] args){
Son s = new Son();
s.show();
}
}
輸出:
son show 0
son show 8
son show 8
說明:
1.JVM讀取指定路徑下Father,class文件加載進內存,再讀取Son.class文件加載進內存
2.堆內存中開闢空間分配地址
3.在對象空間中,對對象的屬性默認初始化即把0賦給i
4.調用構造函數進行初始化
5.在構造函數中先到父類構造函數,並進行初始化此時show()應該爲this.show(),即子類的show()
6.父類構造函數初始化之後,對子類屬性進行顯示初始化,把8賦值給i
7.再執行子類構造函數中剩下的初始化語句
8.初始化完畢,將地址賦給引用變量s
}
this與super{
類成員與局部變量同名,用this調用類對象成員,this代表本類對象的引用
子類與父類成員變量同名,用super調用父類成員,super代表父類空間
}
分析程序
class Father{
int i = 4;
}
class Son extends Father{
int i = 5;
}
class Demo{
public static void main(String[] args){
Son son = new son();
}
}
main函數進棧——>在方法區先加載父類,再加載子類——>堆內中創建對象(該對象內有兩個變量i,存儲在不同區域,要調用父類i使用super.i)
}
設計模式(僅僅是一種思想,一個解決問題的方案,沒有固定的代碼)之 單例設計模式{
要求該類只能創建一次對象,保證唯一性方案{
1.有且僅有一個new
2.在本類中直接new
3.定義函數對外提供該new的引用(提供一個靜態方法調用靜態對象而不是直接類名調用靜態對象是 由於函數可以保證可控制性)
}
步驟{
1.私有化該類構造函數
2.new一個對象,賦給靜態引用,保證在靜態函數中被調用
3.定義一個static方法,保證用類名直接調用,返回該對象引用
}
代碼一:
class Single{
static Single single = new Single();
private Single(){}
public static Single getInstance(){
return single;
}
}
稱爲餓漢式,加載類的時候就創建對象。適合在開發中使用
代碼二:
class Single{
static Single single = null;
private Single(){}
public static Single getInstance(){
if (single == null)
single = new Single();
return single;
}
}
稱爲懶漢式,延遲加載,等到調用該類函數的時候才創建對象,經常用於面試不適合在開發中使用,因爲在多線程編程時,有可能保證不了對象的唯一性
}