重載(Overloading)java
1)方法重載是讓類以統一的方式處理不一樣類型數據的一種手段。多個同名函數同時存在,具備不一樣的參數個數/類型。重載Overloading是一個類中多態性的一種表現。
(2) Java的方法重載,就是在類中能夠建立多個方法,它們具備相同的名字,但具
有不一樣的參數和不一樣的定義。調用方法時經過傳遞給它們的不一樣參數個數和參數類型
來決定具體使用哪一個方法, 這就是多態性。
(3) 重載的時候,方法名要同樣,可是參數類型和個數不同,返回值類型能夠相同也能夠不相同。沒法以返回型別做爲重載函數的區分標準。
重寫(Overriding)
(1)父類與子類之間的多態性,對父類的函數進行從新定義。若是在子類中定義某
方法與其父類有相同的名稱和參數,咱們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不須要從新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想做必定的修改,這就須要採用方法的重寫。方法重寫又稱方法覆蓋。
(2)若子類中的方法與父類中的某一方法具備相同的方法名、返回類型和參數表,
則新方法將覆蓋原有的方法。如需父類中原有的方法,可以使用super關鍵字,該關鍵 字引用了當前類的父類。
(3)子類函數的訪問修飾權限不能少於父類的;編程
值傳遞(形式參數類型是基本數據類型):數組
方法調用時,實際參數把它的值傳遞給對應的形式參數,形式參數只是用實際參數的值初始化本身的存儲單元內容,是兩個不一樣的存儲單元,因此方法執行中形式參數值的改變不影響實際參數的值。session
引用傳遞(形式參數類型是引用數據類型參數):app
也稱爲傳地址。方法調用時,實際參數是對象(或數組),這時實際參數與形式參數指向同一個地址,在方法執行中,對形式參數的操做實際上就是對實際參數的操做,這個結果在方法結束後被保留了下來,因此方法執行中形式參數的改變將會影響實際參數。函數
接口this
接口是一種比抽象類更加抽象的「類」。這裏給「類」加引號是我找不到更好的詞來表示,可是咱們要明確一點就是,接口自己就不是類,從咱們不能實例化一個接口就能夠看出。如new Runnable();確定是錯誤的,咱們只能new它的實現類。spa
抽象類設計
在面向對象的領域一切都是對象,同時全部的對象都是經過類來描述的,可是並非全部的類都是來描述對象的。若是一個類沒有足夠的信息來描述一個具體的對象,而須要其餘具體的類來支撐它,那麼這樣的類咱們稱它爲抽象類。對象
抽象類一般表明一個抽象概念,他提供一個繼承的出發點,當設計一個新的抽象類時,必定是用來繼承的。因此,在一個以繼承關係造成的等級結構裏面,樹葉節點應當是具體類,而樹枝節點均應當是抽象類。
繼承
就是擴展已有類的功能,在繼承中分爲子類和父類,父類有時候也稱爲超類(super class),子類有時候稱爲派生類。
繼承的基本語法爲:class子類 extends 父類 {}
繼承的限制:1)在Java中不容許多重繼承,一個子類只能繼承一個父類,不能繼承多個父類;2)java中容許多層繼承;3)在繼承中子類不能訪問父類中的私有成員,只能繼承公共操做。可是私有成員能夠經過公共方法獲得訪問。
實現
類實現接口,本質上與類繼承類類似,區別在於「類最多隻能繼承一個類,即單繼承,而一個類卻能夠同時實現多個接口」,多個接口用逗號隔開便可。實現類須要覆蓋全部接口中的全部抽象方法,不然該類也必須聲明爲抽象類。
2、接口是否可繼承接口?
接口是能夠繼承接口的。好比在項目中須要N個接口,他們都要實現一些經常使用的功能,這樣你就能夠只寫一個接口,而後讓你的其餘接口都這個接口。一般IBaseDao就是這樣的。定義一個泛型接口,而後讓其餘接口去繼承它並定義各自的泛型類,這樣就方便不少。
3、抽象類是否可實現(implements)接口?
抽象類能夠實現接口
4、抽象類是否可繼承實體類(concrete class)?
抽象類能夠繼承實體類,但前提是實體類必須有明確的構造函數。答案很明確,能夠繼承。其實從Object就是個實體類,java的API文檔裏,每一個抽象類的條目裏都明確寫着直接或間接繼承自Object,
全部的class都必須有一個構造方法,若是你沒有在代碼裏聲明構造方法,系統會自動給你生成一個公有無參的構造方法。而只要你本身聲明瞭一個構造方法,不管有參無參,私有公有,系統就再也不幫你生成默認無參構造器了。
全部的子類構造器都要求在第一行代碼中調用父類構造器,若是不寫,系統默認去調用父類的無參構造器。
多態
面向對象編程有三大特性:封裝、繼承、多態。
封裝隱藏了類的內部實現機制,能夠在不影響使用的狀況下改變類的內部結構,同時也保護了數據。對外界而已它的內部細節是隱藏的,暴露給外界的只是它的訪問方法。
繼承是爲了重用父類代碼。兩個類若存在IS-A的關係就可使用繼承。,同時繼承也爲實現多態作了鋪墊。那麼什麼是多態呢?多態的實現機制又是什麼?請看我一一爲你揭開:
所謂多態就是指程序中定義的引用變量所指向的具體類型和經過該引用變量發出的方法調用在編程時並不肯定,而是在程序運行期間才肯定,即一個引用變量倒底會指向哪一個類的實例對象,該引用變量發出的方法調用究竟是哪一個類中實現的方法,必須在由程序運行期間才能決定。由於在程序運行時才肯定具體的類,這樣,不用修改源程序代碼,就可讓引用變量綁定到各類不一樣的類實現上,從而致使該引用調用的具體方法隨之改變,即不修改程序代碼就能夠改變程序運行時所綁定的具體代碼,讓程序能夠選擇多個運行狀態,這就是多態性。
好比你是一個酒神,對酒情有獨鍾。某日回家發現桌上有幾個杯子裏面都裝了白酒,從外面看咱們是不可能知道這是些什麼酒,只有喝了以後纔可以猜出來是何種酒。你一喝,這是劍南春、再喝這是五糧液、再喝這是酒鬼酒….
JSP九大隱式對象:
request HttpServletRequest
response HttpServletResponse
session HttpSession
application ServletcContext
config ServletConfig
exception (特殊狀況下使用)
page this(本JSP頁面)
out JspWriter(帶緩衝的PrintWriter)
pageContext (使普通Java類可訪問WEB資源,自定義 標籤經常使用)
4個域對象:
pageContext(稱之爲page域)
request(稱之爲request域)
session(稱之爲session域)
servletContext(稱之爲application域)
冒泡排序
package 冒泡排序;
import java.util.Arrays;
/**
* 冒泡排序
* @author mmz
*/
public class BubbleSort {
public static void BubbleSort(int[] arr) {
int temp;//定義一個臨時變量
for(int i=0;i<arr.length-1;i++){//冒泡趟數
for(int j=0;j<arr.length-i-1;j++){
if(arr[j+1]<arr[j]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
public static void main(String[] args) {
int arr[] = new int[]{1,6,2,2,5};
BubbleSort.BubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
}