面向对象(继承,多态)
二維數組的定義格式:
第一種:直接給定了每一個一維數組中數組長度
數據類型[][] 數組名稱 = new 數據類型[m][n]
第二種:給定了多少個一維數組,長度動態給定
數據類型[][] 數組名稱 = new 數據類型[m][] ;
第三種:二維數組中直接給定元素值
數據類型[][] 數組名稱 = {{元素1,元素2},{元素1,元素2}…}
代碼塊
在Java中,{}括起來,統稱為代碼塊
局部代碼塊,構造代碼塊,靜態代碼塊(隨著類的加載而加載,只執行一次)
構造代碼塊:在每次執行構造方法之前,優先執行構造代碼塊
優先級:靜態代碼塊>構造代碼塊>構造方法
繼承
class Zi extends Fu{…}
A. 繼承的好處:
1)提高代碼的復用性
2)提高代碼的維護性
3)它是多態的前提
B. 繼承的特點:
繼承不能多繼承,只能單繼承,但是可以多層繼承..
C.注意事項:
1)子類繼承父類,可以繼承父類所有的東西(除過構造方法),私有的(private),不能直接 訪問,所有需要提供公共的方法…
2)不能繼承構造方法,但是可以通過super()關鍵字去訪問…
3)子類繼承父類,子類的構造方法(有參/無參)都會默認的訪問父類的無參構造方法, 優先讓父類的數據進行初始化.
D. 假如:父類沒有無參構造方法?會怎么樣?如何解決?
會出現編譯錯誤;
解決方法如下:
1)可以提供無參構造
2)通過super(父類的帶參構造)..
3)通過this(),通過本類的無參構造,再通過無參構造間接的去訪問父類的代碼帶參構 造..
E.成員變量,
1) 如果子類繼承父類,子類中的成員變量和父類中的成員變量名稱不一致,分別輸出
2)名稱一致的情況:先在子類的局部位置找,找到,就輸出
3)名稱一致,還沒有找到,到子類的成員位置找,有就輸出,否則,到父類的成員位置 找,有就輸出, 沒有,就報錯…
F.成員方法
子類繼承父類,子類的成員方法名和父類的名一致,
先子類中找,有就調用,沒有就會到父類中調用
方法重寫:override
方法重載:overload
子類聲明了一個和父類一模一樣的方法聲明,其目的是為覆蓋父類的方法,完成自己 的功能…
4.多態:
同一時刻,體現出來的不同狀態
A.多態的前提:
1)必須有繼承關系
2)必須有方法重寫
3)父類的引用指向子類對象(向上轉型)
5.抽象類
A.抽象類:(抽象類有抽象類多態的形式。。)
將類中的功能抽象化,類變成抽象類
關鍵字:abstract
抽象類的特點:不能實例化 -不能創建對象
抽象了的子類是具體類才是研究課題:由于具體類所有抽象類通過他子類進行實例化
B.抽象類的成員特點:
成員變量:可以是常量,也可以是變量
構造方法:有參/無參
成員方法:可以是抽象的,也可以是非抽象的
(有抽象方法的類一定是抽象類,抽象類中不一定有抽象方法)
6.接口
A. 接口:
給一些類提供一些額外的功能(擴展功能),定義接口
關鍵字:interface
class 子實現類(后面加impl,做到見名知意) implements(實現) 接口{.......}
B.接口中的成員特點:
成員變量:此變量是一個常量:public static final :默認的修飾符
構造方法:接口沒有構造方法
成員方法:都是抽象方法
形式參數和返回值問題
A.形式參數是引用類型的情況:
具體類: 需要傳遞的是該類 對象
抽象類:需要傳遞是該抽象類的子類對象
接口:需要傳遞是該接口的子實現類 (還可以匿名內部類的方式)
B.返回值的問題:
具體類:返回該該具體類的對象
抽象類:返回的是該抽象類的子類對象(間接的:抽象類多態…)
接口:返回的是該接口的子實現類對象(間接:接口多態)
內部類:
A.成員內部類和局部內部類的寫法
B.外部類訪問成員內部類,局部內部類中的 成員使用的方式….
1) 成員內部類是非靜態的,外部類訪問內部類的成員
外部類名.內部類名 對象名 = 外部類對象.內部對象;
2) 如果成員內部類是靜態的,外部類訪問內部類的成員
外部類名.內部類名 對象名 = new 外部類名.內部類名() ;
內部類訪問外部類的成員變量可直接訪問,靜態的內部類訪問外部類的數據,該數據 必須static修飾,和當前靜態內部類的成員方法是否為靜態還是非靜態“ 沒有關系”
C.匿名內部類:
前提:接口或者抽象類(可以抽象類也可以普通類)
new 接口名/類名(){
重寫功能(){…}
}
本質:繼承了該類或者是實現了該接口的子類對象..
final是一個修飾符,可以修飾類,方法和變量'
被final修飾的類是一個最終類不可以被繼承;
被final修飾的方法是一個最終的方法.不可以被覆蓋;
被final修飾的變量是一個常量,只能被賦值一次;
10.面試題
A. 方法重寫和方法重載的區別?
方法重載:Overload
方法名相同,返回值類型相同,但是參數不同(參數類型不同,或者參數個數不同)
方法重寫:Override
方法重寫是相對于繼承而言
重寫的方法名,返回類型,參數類型,參數個數都要求和父類中一樣.
轉載于:https://blog.51cto.com/13678296/2105666
總結
以上是生活随笔為你收集整理的面向对象(继承,多态)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: x27摄像头怎么升降(X27最新报价)
- 下一篇: 刺激战场段位对应分数(一提刺激消费)