1:final關鍵字可以幹什麼?有什麼特點?
修飾類,使得類不能被繼承
修飾變數,相當於const,變數不能被更新
修飾方法,方法不能被重寫override
2:final關鍵字的面試題?
a:修飾區域性變數
基本型別:值不變
引用型別:位址不變,例如在乙個類中再new乙個其他類的final物件d,則d中變數可變,但d不能再new一次
b:初始化時機
被final修飾的變數只能賦值一次。
在構造方法完畢前。(非靜態的常量)
3:多型是什麼,前提是什麼?
同乙個物件(事物),在不同時刻體現出來的不同狀態。
前提:
繼承關係
方法重寫,實際上可以沒有,但如果沒有,沒有實際意義
父類引用指向子類物件
4:多型中成員訪問的特點?
成員變數:編譯執行都看左邊
成員方法:編譯看左邊,執行看右邊
靜態方法:編譯看左邊,執行看左邊。(靜態和類相關,算不上重寫,所以,訪問還是左邊的)
5:多型的好處及弊端?如何解決多型的弊端?
好處:提高了**的維護性(繼承保證)
提高了**的擴充套件性(由多型保證)
弊端:不能使用子類特有的方法
如何解決弊端:建立子類物件呼叫方法即可。(可以,但是很多時候不合理。而且,太佔記憶體了)
把父類的引用強制轉換為子類的引用。(向下轉型)
6:什麼是向上轉型?什麼是向下轉型?
把子類物件轉為父類物件
把父類物件強制轉為子類物件
8:抽象類概述及其特點?
用abstract修飾的類為抽象類
抽象類不能用new建立物件,但它有構造方法,構造方法用於子類訪問父類的資料的初始化,但可以作為上轉型物件
抽象類可以沒有抽象方法,但一旦有抽象方法,則該類必須是抽象類
如果子類不想重寫父類抽象方法,則子類必須為抽象類,否則必須重寫
9:抽象類成員特點?
抽象方法不能有方法體
在抽象類中可以有變數和常量(final)
有構造方法
11:抽象類的小問題
a:乙個類如果沒有抽象方法,可不可以定義為抽象類?如果可以,有什麼意義?
可以沒有抽象方法,這樣意義是不讓建立抽象類物件
b:abstract不能和哪些關鍵字共存
private,衝突,private 法要求不能繼承,abstract要求重寫,
final, 衝突,同上
static(無意義),抽象類中可以有靜態方法,但abstract和static不能同時修飾方法
12:介面的概述及其特點?
inte***ce 介面名
類用implement 介面名實現多型
13:介面的成員特點?
變數只能為常量,int a=100;實際上預設是public static final int a=100;
沒有構造方法
介面中方法預設為public。而且介面中預設為public abstract,所以在類中重寫時必須寫public否則就降低了許可權
14 介面和類的繼承
類與類:
繼承關係,只能單繼承,可以多層繼承。
類與介面:
實現關係,可以單實現,也可以多實現。
並且還可以在繼承乙個類的同時實現多個介面。
介面與介面:
繼承關係,可以單繼承,也可以多繼承。
15:抽象類和介面的區別?
成員區別:
類:有變數或常量,構造方法,成員方法可以抽象,或非抽象
介面:只有常量,抽象方法,無構造方法
繼承關係
類:單繼承
介面:多繼承
設計理念:
抽象類 被繼承體現的是:」is a」的關係。抽象類中定義的是該繼承體系的共性功能。
介面 被實現體現的是:」like a」的關係。介面中定義的是該繼承體系的擴充套件功能。:
java多型繼承
繼承中的成員方法訪問特點 子類繼承父類,當成員方法名稱不一致的時候,分別呼叫 當成員方法名稱一致的情況,首先在子類中有麼有該方法,如果有,就呼叫 如果沒有,就呼叫父類的成員方法 方法重寫 override 繼承裡面的技術 當子類出現了和父類一模一樣的方法的時候,子類的方法會重寫 覆蓋,複寫 父類的方...
Java介面 繼承 多型
介面是為了解決多繼承問題 修飾符 inte ce 介面名 extends 父介面名列表 注意 修飾符可預設,父介面名列表可省略,但是一旦寫了extends就不能省略 與類相同介面檔名與介面相同 介面可以繼承 介面名稱前面有大寫l 實現介面 修飾符 class 類名 extends 父類名 imple...
java介面 繼承 多型
在建構函式中,如果第一行沒有寫super 編譯器會自動插入 需要注意的是子類不是一定要初始化父類,但當父類沒有無引數的建構函式時或者無引數建構函式為private時,需要手動呼叫有引數的建構函式 在obect類中主要包括equals tostring clone finalize方法 常用的方法 g...