多態 抽象類 接口

多態

 多態包括兩種  方法的重載和重寫  對象的向上和向下轉型

一、方法的重載和重寫

重載與重寫的區別:

方法重載指的是,在同一個類中,允許多個方法名相同,參數列表不同(類型,個數,順序)即可,與訪問控制符、返回值、異常無關

 

方法的重寫指的是,在繼承中如果父類中某個方法不能滿足子類的需求,子類可以重寫父類中的該方法。重寫時,方法名、返回值類型、參數列表都必須和父類中該方法一樣,子類中的訪問控制符不能比父類更嚴格。如果父類中的該方法使用private修飾,在子類中就不叫重寫(因爲子類根本無法訪問該方法)。

 

重載重寫對比

 

位置

方法名

參數列表

返回值

訪問控制符

重載

同一類中

一樣

不一樣

無關

無關

重寫

父類和子類

一樣

一樣

一樣

子類不能比父類嚴格


二、對象的向上和向下轉型

1、向上轉型之後只能調用父類裏的有的方法;

2、向上轉型後,如果調用的方法在子類中重寫,那麼調用的就是重寫後的方法;

3、向下轉型之前要經歷向上轉型;

規律:多態時,能調用哪些方法看前面,調用方法的效果看後邊(指的是構造方法), 屬性的值看前邊。



抽象類

用abstract修飾的類是抽象類。抽象方法不能使用private修飾


1、一個類如果有抽象方法,那麼這個類一定是抽象類;

2、抽象類中不一定有抽象方法;

3、抽象類可以寫構造方法;

4、抽象類不能實例化。

5、抽象方法只需要聲明不需要實現

6、抽象類不能創建對象,無法使用new關鍵字調用抽象方法的構造方法創建對象。即使抽象類中包含構造方法該類也不能創建對象。

7、子類繼承抽象類時,必須要重寫抽象類中的所有抽象方法(如果子類也是抽象類可以不重寫)


接口  ------更徹底的抽象類

接口的特點:

1、接口中所有方法都是抽象方法;

2、接口是單繼承,但一個類可以實現多個接口(實現了多繼承);

3、接口不能實例化、接口沒有構造方法。

4、接口中的方法全部都是抽象方法,常量全部都是靜態常量。

5、當一個類實現某個接口時,它必須實現該類中的所有的抽象方法,除非這個類定義爲抽象類。

接口的作用:規範代碼。

接口繼承接口用extends,可以多繼承。


包裝類

一、Java中八大基本類型的基本數據初始值都爲0;而包裝類的初始值爲null.


 二、下面是wo包裝類常用的轉換

1、int 類型轉換爲字符串

int a=0;

String s=a+"";   0的字符串

2、字符串轉成int 類型

String i="10";

int i2=Integer.parseInt(i);  

3、字符串轉成Boolean

String b="true";

Boolean b1=Bolean.paresBoolean(b);

三、這是我找的一個面試題,可以研究下:

有這個一個九位數,它由123456789組成,每個數字出現僅切出一次,數字的前一位能被1整除,前2位能被2整除......前九位能被9整除,求這個數字。



異常

重點掌握:

try,catch,finally,throws,throw五個關鍵字

try{

可能發生異常的代碼塊;

}catch(Exception e){

異常處理代碼塊;

}finally{

必須執行的代碼塊;

}

下面是我做的一個案例:

 

捕獲多個異常





注意:使用多重catch語句時,異常子類一定要位於異常父類之前


throws 處理異常(拋出異常)

 

throw 拋出自定義異常

 

Finalfinallyfinalize的區別

Final修飾類:類不可被繼承

Final修飾變量:變量值不可變

Final修飾方法:方法不可被重寫

Finally用於捕獲異常  try catch finally語句

Finalize用於處理垃圾回收


多線程

創建多線程

★繼承Thread類,重寫run方法

◆語法:

class Test extends Thread{//繼承Thread

public void run() {//重寫run方法

//方法體

}

}

 

★實現Runnable接口,實現run方法

◆語法:

class Test implements Runnable{//實現Runnabel接口

public void run() {//實現run方法

//方法體

}

}

創建線程的方法對比:

 

優點

缺點

繼承Thread

簡單

無法再繼承其他類

無法實現資源共享

實現Runnable接口

可以繼承其他類

可以實現資源共享

複雜

 

在開發張大多數情況下選擇使用實現Runnable接口的方式來創建線程。


集合

 list set map ArrayList



set和list都是儲存數據,set存放的數據不重複,是無序的;list可以吧存放重複數據,是有序的;map以鍵值對的形式存放數據。

ArrayList和LinkedList的區別

ArrayList存放的數據是有序的(順序排放)

linkedList的數據是指向排放的,常用於數據的插入,刪除,修改。

這是他們內存的一個分析:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章