接口:數據庫
1). 什麼是接口?
接口是對外暴露的規則.
2). 如何定義接口?
使用關鍵字 interface 接口名{}
3). 接口與類的關係?
實現關係, 能夠單實現, 也能夠多實現, 可是多個接口名之間, 須要用逗號進行分隔.
使用關鍵字: implements
class 實現類 implements 接口名{
}
4). 接口是否能夠實例化?
不能夠實例化, 由於內部含有抽象方法.ide
抽象類:this
1). 什麼是抽象類?
把像的部分和類似的部分抽取到一個父類當中, 抽象類就是一個特殊的父類.
這個特殊的父類和普通的父類,區別就在於, 抽象類當中能夠定義抽象方法.
2). 如何定義抽象類和抽象方法?
經過abstract關鍵字
類: abstract class 類名{}
方法: public abstract 返回值類型 方法名();
3). 抽象類是否能夠建立對象?
不能夠, 若是容許的話, 就表明能夠調用沒有方法體的抽象方法, 這樣作沒有任何意義.
4). 抽象類的子類?
1. 重寫全部的抽象方法 -> 推薦
2. 將本身自己也變成抽象類
5). 抽象類的成員特色?
1. 成員變量
能夠是變量, 也能夠是常量
2. 成員方法
能夠是普通的方法, 也能夠是抽象方法
3. 構造方法
有, 目的是爲了給子類進行初始化的
總結: 抽象類當中除了能夠定義抽象方法以外, 其他的定義跟普通的類沒有區別.spa
構造方法:code
1). 構造方法的做用?
用來給對象中的屬性進行初始化的.
通常都會經過有參構造建立對象, 並給屬性賦值.對象
2). 構造方法的格式?
A. 方法名要與類名相同, 大小寫也要一致
B. 沒有返回值類型連void都沒有
C. 沒有具體的返回值
問題 : 構造方法沒有返回值, 能夠編寫return語句嗎?
能夠, 可是return後面不能跟上具體的值.
3). 構造方法的注意事項?
若是一個類當中, 沒有給出任何構造方法, 那麼系統將會默認提供一個空參的構造方法, 可是若是手動給出了有參構造
系統將不會再提供默認的空參構造
建議: 從此空參有參都手動給出.
4).構造方法能夠重載嗎?
構造方法也是方法, 因此能夠進行重載.blog
setXxx與getXxx:繼承
給成員變量初始化有幾種方式?接口
答:
1. 經過有參構造初始化
2. 經過setXxx方法初始化
問題: 兩種方式有什麼區別?
答案: 通常都是經過有參構造進行(初始化), 再經過setXxx方法(修改)屬性值
二者每每是配合使用的內存
靜態變量和成員變量
什麼是靜態
答 : 靜態指的就是static關鍵字, static是一個修飾符
被其修飾的成員有什麼特色?
1). 靜態關鍵字的特色是?
a: 隨着類的加載而加載, 優先於對象存在
b: 被類的全部對象所共享
c: 多了一種調用方式, 能夠經過類名.進行調用
2). 靜態的好處是?
a: 調用方便
b: 節約內存
3). 靜態關鍵字的注意事項?
a: 靜態當中只能訪問靜態成員(方法,對象).
問題: 靜態中是否有this\super關鍵字? 爲何?
沒有, this表明當前對象的引用, this只有在建立對象以後,纔會存在, super也是同樣.
靜態存在的時候, 有可能對象沒有被建立出來, 因此說靜態當中沒有this和super.
08. 靜態變量和成員變量的區別?
1. 所屬不一樣:
靜態變量 : 類
成員變量 : 對象
2. 內存位置不一樣
靜態變量 : 方法區中, 字節碼文件的靜態區
成員變量 : 堆內存
3. 內存出現時間不一樣
靜態變量 : 隨着類的加載而加載
成員變量 : 隨着對象的建立而存在
4. 調用不一樣
靜態變量 : 多了一種調用方式, 能夠經過類名.進行調用, 也能夠經過對象名進行調用
成員變量 : 只能對象名進行調用
代碼塊
1). 什麼是代碼塊?
被一對大括號括起來的代碼, 就稱之爲代碼塊
2). 代碼塊的分類?
1. 局部代碼塊
位置: 方法中的一對大括號
做用: 限定了變量的聲明週期, 能夠提前的釋放內存
2. 靜態代碼塊
位置: 類中方法外的一對大括號, 須要加入static修飾
做用: 通常用於加載驅動, 得到數據庫鏈接
特色: 隨着類的加載而執行, 且只執行一次.
-----------------------------------------
3. 構造代碼塊
4. 同步代碼塊
this和super的區別
1).this和super的區別
1). 什麼是this關鍵字?
this表明當前對象的引用, 誰來調用我, 我就表明誰.
2).什麼是super關鍵字
super : 表明的是當前對象父類的引用.
2). 調用方面有什麼區別?
成員變量:
this : 能夠調用本類的成員變量, 也能夠調用父類的成員變量
前提: 子父類當中沒有出現重名的成員變量.
super : 能夠調用父類的成員變量
成員方法:
this : 能夠調用本類的成員方法, 也能夠調用父類的成員方法
前提: 子父類當中沒有出現重名的成員方法.
super : 能夠調用父類的成員方法
構造方法:
this() : 調用本類的構造方法
super() : 調用父類的構造方法
簡單記: this調用的是本類成員, super調用的是父類成員.
final關鍵字
final能夠修飾類,方法,變量。
被修飾的類: final修飾的類不能夠被繼承。
被修飾的方法: final修飾的方法不能夠被覆蓋。
被修飾的變量: final修飾的變量是一個常量。只能被賦值一次。
重寫和重載
問題: 重寫和重載的區別是?
重載(Overload)
在同一個類中, 方法名相同, 參數列表不一樣, 與返回值無關
參數列表不一樣:
1. 類型不一樣
2. 個數不一樣
3. 順序不一樣(沒有意義)
好處:能夠提升代碼的閱讀性,(見名知意)
錯誤誤區:在一個類中,方法名相同,參數列表也相同,這不是重載,這叫方法從新定義
重寫(Override) 子父類當中, 出現了方法聲明如出一轍的方法, 返回值類型小於等於父類的類型. 問題: 方法重寫有哪些注意事項? a: 子類重寫父類的方法, 訪問權限必須大於等於父類的權限 b: 子類不能重寫父類中私有的方法.