面向過程和麪向對象的區別:
面向過程:把問題分析成一個一個步驟組成的過程
面向對象:從一個問題中分析出各個功能對象,並描述各個功能在整個解決問題的步驟的行爲.
面向對象的3大特徵:
封裝,繼承,多態
封裝:把多個異構的屬性包裹在一個專門的類裏面經常使用於異構數據的傳遞。
java中設置的訪問權限:java
繼承:指的是兩個類之間的關係,爲父子關係,被繼承者爲父類,繼承者爲子類,一個子類繼承一個父類,則繼承了父類的屬性和方法。
繼承的特色:
1,一個子類只能繼承一個父類,一個父類可被多個子類繼承.
2,子類繼承父類全部屬性和方法
3,子類能夠對父類的方法進行重寫和覆蓋.
子類的對象能夠賦值給父類的數據類型,則只能調用父類的屬性和方法。但此時若子類重寫了父類的屬性或方法,則調用子類對父類重寫的屬性和方法.函數
關鍵字:extends. 例如A(子) entends B(父)
何時用繼承:
當多個類裏面有共同的方法/屬性的時候,咱們能夠把公共代碼抽取到一個公共的父類中,達到代碼公用的做用。
子類與父類的構造函數有什麼關係?
當咱們new 一個對象的時候,JVM會自動調用這個類對應的構造函數,構造函數能夠寫多個,能夠接受參數,所以咱們能夠有多種方式去建立一個對象。若是不寫,系統會默認提供一個無參的構造,若是寫了,就不提供了。
若是一個子類繼承了一個父類,在建立這個子類的對象以前,他的父類對象一定會先建立。
*默認狀況下,會先直接調用父類的無參構造,而後再調用子類對應的構造函數,所以,若是這時父類中只有有參的構造函數是不行的
*子類也能夠在本身的構造函數中經過super(參數)顯式調用對應的父類構造(有參/無參)this
this與super 兩個關鍵字有何做用?
this:指的是當前本類對象;super,指的是當前父類對象
this(參數):調用本類的構造函數;super(參數):調用父類的構造函數spa
什麼是接口?如何實現一個接口?
接口是一個特殊的「類」,一個接口裏面的方法只有定義,沒有實現。
一個類能夠實現一個接口,這個類就稱爲這個接口的實現類。
接口及其實現類有什麼特色?
一、接口中的方法不能有實現
二、接口不能new
三、一個類實現一個接口,必須實現該接口的全部方法,同時這個類也能定義本身的方法
四、一個類能夠同時實現多個接口,一個接口也能同時被多個類實現.(實現類關鍵字: implements)
五、一個實現類的對象能夠賦值給其接口的數據類型,但這樣只能調用接口中定義的屬性和方法(同繼承)
何時使用接口?
接口,就是用於定義一個純粹的模型或者規範,讓開發者去實現這個規範。
接口能夠支持多繼承嗎?爲何?
能夠,緣由跟一個類能夠同時實現多個接口同樣,由於接口中的方法都只是定義。3d
什麼是多態?多態有哪些表現形式?
多態,就是多種狀態,主要表如今方法重寫(或者接口方法實現)上。
面向對象的多態性,無疑增長了系統的擴展性.
與方法重寫這一律念類似的是方法重載,方法重載,其實就是多個方法,同名不一樣參數(有一些說法認爲這也是多態的表現之一,但更多的認爲不是)
什麼是抽象類?
抽象類,就是普通類與接口之間一個過渡的特殊類,裏面容許定義沒有實現(抽象方法),同時容許有實現的普通方法.
關鍵字:abstract對象
抽象類有什麼特色:
一、一個抽象類裏面容許有抽象方法,也容許有非抽象類,只要在定義類的時候加上abstract關鍵字,那麼這個類就是抽象類(即不必定要有抽象方法,只是沒有抽象方法的抽象類沒有意義 )
接口其實就是一個嚴格的抽象類,裏面不容許有非抽象方法,所以接口中的方法定義能夠把abstract省缺。
二、與接口同樣抽閒類不能new.
三、子類繼承了抽象父類,能夠不實現父類的抽象方法,可是本身也必須定義爲抽象類 blog
何時使用抽象類?
接口是嚴格的抽象類,用於定義一個純粹的模型或者規範,讓開發者去實現這個規範。假如,咱們在定義一個模型或者規範的同時,須要提供一部分公共的實現,則能夠繼承一個抽象類並實現其中的抽象方法。繼承