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