多態(tài)
子類對(duì)象可以存到父類的變量中
前提條件
子父類關(guān)系
方法重寫
父類引用指向子類對(duì)象
好處
提高代碼的復(fù)用性和擴(kuò)展性
缺點(diǎn)
不能使用子類對(duì)象的特有方法
多態(tài)成員訪問的特點(diǎn)
編譯看左邊啄清,運(yùn)行看左邊
成員變量
靜態(tài)方法
編譯看左邊六水, 運(yùn)行看右邊? ,只要子類中重寫了,一定執(zhí)行子類的方法
非靜態(tài)成員方法 (全遮擋)
多態(tài)轉(zhuǎn)型
向上轉(zhuǎn)型 (子類轉(zhuǎn)父類)
線下轉(zhuǎn)型 (父類轉(zhuǎn)子類掷贾,有危險(xiǎn)), 轉(zhuǎn)之前,要使用 instanceof關(guān)鍵字判斷一下
final
最終的睛榄, 無法被改變? , 只能賦值一次
修飾的特性
修飾類, 類不能被繼承
修飾方法, 方法不能被重寫
修飾變量, 變量只能賦值一次
修飾成員變量時(shí)
在初始化完畢之前必須要賦值
靜態(tài)是類初始化完畢前
非靜態(tài)是對(duì)象初始化完畢前
抽象類
abstract關(guān)鍵字
制定規(guī)則
一個(gè)類中如果有抽象方法,這個(gè)類也必須是抽象類
抽象類中可以沒有抽象方法
抽象不能實(shí)例化(創(chuàng)建對(duì)象) , 不安全, 抽象方法用不了
抽象類的子類可以是抽象類, 不用重寫抽象方法
抽象類的子類可以是非抽象類, 必須重寫抽象方法
java傳遞值得方式
基本數(shù)據(jù)類型傳遞的是值, 引用數(shù)據(jù)類型傳遞的是址, String稍微特殊
接口
interface implements
接口中全部都是抽象方法
接口中的成員變量
都是公開的, 靜態(tài)的, 最終的? public static final
作用
指定規(guī)則
思考的過程
代碼的框架
我們?cè)谒伎歼^程中, 用來記錄業(yè)務(wù)邏輯.
類和接口之間的關(guān)系
類和類: 繼承 單繼承, 多層繼承
類和接口: 實(shí)現(xiàn), 可以多實(shí)現(xiàn)
接口和接口: 繼承, 可以多繼承
模板模型
實(shí)現(xiàn)類和接口中的內(nèi)容保持一致
好處: 提高了代碼的擴(kuò)展性
成員內(nèi)部類
當(dāng)類中的成員過多時(shí), 使用成員內(nèi)部類再次分組
成員內(nèi)部類一般來說時(shí)為外部類服務(wù)的
特性
內(nèi)部類可以直接調(diào)用外部類的成員
外部類需要先創(chuàng)建對(duì)象才能調(diào)用內(nèi)部類的成員
內(nèi)外部類都可以調(diào)用對(duì)方的私有化成員
創(chuàng)建內(nèi)部類對(duì)象前必須先創(chuàng)建外部類對(duì)象
靜態(tài)內(nèi)部類
基本用法和成員內(nèi)部類相似
就是給內(nèi)部類加上static關(guān)鍵字想帅, 唯一的作用是可以讓用戶跳過外部類直接訪問到內(nèi)部類
內(nèi)部類是靜態(tài)的场靴,絕不能認(rèn)為內(nèi)部類中的成員也是靜態(tài)的,這些成員還是原先的調(diào)用方式
如果內(nèi)部類中有靜態(tài)成員港准,那么這個(gè)內(nèi)部類也必須是靜態(tài)的
局部?jī)?nèi)部類
當(dāng)一個(gè)類只能在當(dāng)前方法中被用到時(shí)旨剥,我們沒有必要將他寫道外部去, 可能會(huì)干擾其他類的使用
局部?jī)?nèi)部類中如果使用局部變量浅缸, 那么轨帜,這個(gè)變量要變成常量
匿名內(nèi)部類
創(chuàng)建某個(gè)類或接口的子類對(duì)象, 類只被使用異常
new 父類 () { } ;
異常
異常在Java中普遍存在衩椒, 并且有存在的意義
可能發(fā)生異常的地方 蚌父?
運(yùn)行時(shí)
代碼警告
語(yǔ)法錯(cuò)誤(自己改)
解決異常的辦法
拋出
try...catch處理
代碼可以繼續(xù)運(yùn)行 ,手動(dòng)書寫處理過程
自定義異常
異常最終要的是類名
繼承Exception就是編譯時(shí)異常
繼承RuntimException就是運(yùn)行時(shí)異常
二維數(shù)組
數(shù)組中存放的還是數(shù)組
權(quán)限修飾符
public protected 默認(rèn)? private
java中的包
jvm識(shí)別類,要知道全名(包名+類名)
編譯器有自動(dòng)補(bǔ)全功能,? 從類本上開始找 -- > import? -- > package
Object
toString
hashCode
equals
getClass
== 和 equals的區(qū)別
equals相等的
兩個(gè)對(duì)象 hashCode一定相等, equals不等的兩個(gè)對(duì)象, hashCode也有可能相等 (兩個(gè)方法同步重寫)
String
String 類代表字符串烟具。Java 程序中的所有字符串字面值(如 "abc" )都作為此類的實(shí)例實(shí)現(xiàn)梢什。我們可以將字符串看作是String, 但是嚴(yán)格嚴(yán)格意義上來說, String還是一個(gè)類,只是比較特殊罷了
常用的構(gòu)造方法
public String():空構(gòu)造
public String(byte[] bytes):把字節(jié)數(shù)組轉(zhuǎn)成字符串
public String(byte[] bytes,int index,int length):把字節(jié)數(shù)組的一部分轉(zhuǎn)成字符串
public String(char[] value):把字符數(shù)組轉(zhuǎn)成字符串
public String(char[] value,int index,int count):把字符數(shù)組的一部分轉(zhuǎn)成字符串
public String(String original):把字符串常量值轉(zhuǎn)成字符串
常用的獲取方法
int length(): 獲取字符串的長(zhǎng)度
char charAt(int index): 獲取指定索引位置的字符
int indexOf(int ch): 返回指定字符在此字符串中第一次出現(xiàn)處的索引, ch是字符的碼表值
int indexOf(String str): 返回指定字符串在此字符串中第一次出現(xiàn)處的索引
int indexOf(int ch,int fromIndex): 返回指定字符在此字符串中從指定位置后第一次出現(xiàn)處的索引
int indexOf(String str,int fromIndex): 返回指定字符串在此字符串中從指定位置后第一次出現(xiàn)處的索引
int lastIndexOf? 同上
String substring(int start):從指定位置開始復(fù)制字符串,默認(rèn)到末尾
String substring(int start,int end):從指定位置開始到指定位置結(jié)束復(fù)制字符串