ReviewDay3
## JAR 文件
創(chuàng)建jar文件
jar options file1 file2
jar cvf jarFileName file1 file2
jar cvf CalculatorClasses.jar *.class icon.gif
文檔注釋
生成注釋
類注釋
import 語句之后彻况, 類定義之前
方法注釋
方法注釋放在所描述方法之前
字段注釋
只需要對公共字段(通常是靜態(tài)常量)
通用注釋
@author? @version 等
包注釋
不同于上面的注釋直接放于源文件舅踪,包注釋有兩種選擇
提供一個(gè) package-info.java
提供一個(gè) package.html
抽取注釋
javadoc-ddocDirectorypackageName1packageName2
-d指定html都將放置于的目錄
繼承
訪問修飾符
public? 對外公開
protected? 對子類和同一個(gè)包中的類公開
默認(rèn)? 沒有修飾符,向同一個(gè)包的類公開
private? 只有類本身可以訪問悍赢,不對外公開
extends
父類货徙,超類, 基類
子類痴颊,派生類,孩子類
方法重寫(覆蓋方法)
@override
子類的方法和父類的方法名稱锌杀、返回類型泻仙、參數(shù)一樣
子類方法不能縮小父類方法的訪問權(quán)限 public>protected>default>private
super關(guān)鍵字
訪問父類非private屬性與方法
訪問父類構(gòu)造器 super(參數(shù)列表)
注意: 只能放在構(gòu)造器的第一句,只能出現(xiàn)一句
super 和 this 的比較
多態(tài)
方法的多態(tài)
方法的重寫和重載體現(xiàn)多態(tài)
對象的多態(tài)
多態(tài)向上轉(zhuǎn)型 可以調(diào)用父類中的所有成員(權(quán)限)突想, 不能調(diào)用子類特有成員
子類對象賦給父類引用(父類引用指向了子類的對象)
父類類型 引用民 = new 子類類型();
多態(tài)向下轉(zhuǎn)型 只能強(qiáng)轉(zhuǎn)父類的引用究抓,而不是對象
子類類型 引用名 = (子類類型) 父類引用
編譯類型與運(yùn)行類型
編譯類型看 “=” 左邊, 運(yùn)行類型看 “=” 右邊
Object類:所有類的父類
equals 方法
"==": 如果判斷基本類型垒探,判斷值是否相等怠李;如果判斷引用類型蛤克,判斷地址是否相等
equals 方法是object的方法(默認(rèn)判斷地址‘==’),子類往往重寫用于判斷內(nèi)容是否相等
publicbooleanequals(Objectobj) {
if(this==obj) {returntrue; }
if(obj==null) {returnfalse; }
if(this.getClass!=obj.getClass) {returnfalse; }
//再向下轉(zhuǎn)型
? ...
//使用 == 判斷基本類型字段(屬性)髓介,使用 Objects.equals() 比較對象字段(引用類型)
return...
}
hashCode() 方法
Object類的默認(rèn)hashCode方法是從對象的存儲地址得出散列碼
如果重新定義了equals方法筋现,應(yīng)重新定義hashCode方法 Objects.hash()
toString 方法
System.out.println(x) 會(huì)調(diào)用x.toString()
數(shù)組繼承了object的toString方法
調(diào)用靜態(tài)方法打印數(shù)組 Arrays.toString(new int[] {1,2,3})
要打印多維數(shù)組箱歧,需要調(diào)用 Arrays.deepToString 方法
抽象類
abstract 關(guān)鍵字
abstract 修飾方法一膨,表示這是抽象方法,沒有方法體价淌,需要子類實(shí)現(xiàn)
訪問修飾符 abstract 返回類型 方法名(參數(shù)列表); //沒有方法體
一旦類包含了abstract方法瞒津,該類必須聲明為abstract類
抽象類不一定要包含abstract方法
一個(gè)類繼承了抽象類,則必須實(shí)現(xiàn)抽象類的所有抽象方法巷蚪,除非該類也聲明為abstract類
抽象類不能用private、final剪验、static來修飾(與重寫相違背)
模板設(shè)計(jì)模式
abstractpublicclassTemplate{//抽象類-模板設(shè)計(jì)模式
publicabstractvoidjob();//抽象方法
publicvoidcalculateTime() {//實(shí)現(xiàn)方法前联,調(diào)用 job 方法
//得到開始的時(shí)間
longstart=System.currentTimeMillis();
job();//動(dòng)態(tài)綁定機(jī)制
//得的結(jié)束的時(shí)間
longend=System.currentTimeMillis();
System.out.println("任務(wù)執(zhí)行時(shí)間 "+(end-start));
? }
}
publicclassAAextendsTemplate{
//計(jì)算任務(wù)
//1+....+ 800000
@Override
publicvoidjob() {//實(shí)現(xiàn) Template 的抽象方法 job
longnum=0;
for(longi=1;i<=800000;i++) {
num+=i;
?? }
? }