本文源碼:GitHub·點這裏 || GitEE·點這裏java
一、面向對象概念git
面向對象編程的主要思想是把構成問題的各個事務分解成各個對象,創建對象的目的不是爲了完成一個步驟,而是爲了描敘一個事物在整個解決問題的步驟中的行爲。github
二、類和對象面試
對象:真實存在惟一的事物;在應用程序中對象是數據和動做的結合體,不只可以進行操做,同時還可以記錄下操做結果。算法
類:抽象的概念,實際就是對某種類型事物的共性屬性與行爲的抽取;例如User[名稱.年齡.性別]類用來描述用戶的基礎信息。spring
Java開發中如何理解面向對象:構建合適的對象接口API體系,建立合適的對象,解決合適的問題,例如JDK的API已經定義好的類,經過這些類建立對象直接使用;經過自定義類來建立對象使用,在MVC中模式中,不一樣業務功能建立不一樣的接口和類系統。數據庫
三、屬性和方法編程
類中變量設計模式
位置區別: 安全
做用區別:
初始值區別:
生命週期:
類中方法
對一個類功能的具體描述,多是類方法或者對象方法;
構造方法
構造函數的做用是用來給對應的對象進行初始化處理,沒有返回值類型的,構造函數的函數名必需要與類名一致,若是一個類沒有顯式的聲明一個構造方法,那麼java編譯器會爲該類添加一個無參的構造函數的,若是一個類已經顯式的寫上一個構造方法時,那麼java編譯器則不會再爲該類添加一個無參的構造方法,構造函數是能夠在一個類中以重載的形式存在多個。
四、接口
接口是一個特殊的類,接口的成員變量默認的修飾符爲:public-static-final,接口中的方法都是抽象的方法,默認的修飾符:public-abstract,接口不能建立對象且沒有構造方法的,接口是給類去實現時使用的,非抽象類實現接口,必需要把接口中全部方法所有實現。
接口的做用:程序的解耦,定義實現類的約束規範,若是須要拓展特別功能,也能夠基於接口形式實現。
類與接口之間關係:多實現關係;接口與接口之間關係:多繼承關係。
五、重載與重寫
方法重寫
父類的功能沒法知足子類的需求時,能夠進行方法的重寫即子父類使用同名的函數,且子類重寫的方法使用@Override註解,這裏存在繼承的關係。
方法重載
在一個類中存在兩個或者兩個以上的同名函數,稱做爲方法重載,函數名要一致,形參列表不一致(形參的個數或形參的類型不一致)。
六、包與權限
權限修飾符
權限修飾符就是控制被修飾的成員的範圍可見性,分爲:public、private、protected、default(沒有修飾)。在不一樣包下面只有public 與 protected 能夠訪問,並且protected必須是在繼承關係下才可以訪問。
包package
包能夠理解爲計算機系統中的文件夾,用來解決類名重複產生衝突的問題,包名所有小寫,語句必須位於java文件中中第一個語句。
封裝
把類中內部的實現細節進行隱藏,只暴露對外的接口,例如實際開發場景中通常實體類的全部成員屬性(成員變量)都要封裝起來,能夠被認爲是一個保護屏障,防止該類的代碼和數據被外部類定義的代碼隨機訪問,適當的封裝可讓程序代碼更容易理解與維護,增強安全性。
繼承
在現有父類的基礎上在從新構建一個新類即子類,經過子類對象能夠訪問父類非私有的成員變量和成員方法,以及重寫父類中的非私有成員方法,繼承的做用就是能提升代碼的複用性。
多態
多態指一個對象能夠具有多種形態,例如:父類的引用類型變量指向了子類的對象;接口的引用類型變量指向了接口實現類的對象;這種狀況是存在於繼承或者實現關係中,多態狀況下,子父類存在同名的成員變量時,訪問的都是父類的成員,除了在同名非靜態函數時纔是訪問子類的。
一、This關鍵字
this關鍵字表明瞭所屬函數的調用者對象,若是存在同名成員變量與局部變量時,在方法內部默認是訪問局部變量的數據,能夠經過this關鍵字指定訪問成員變量的數據,在一個構造函數中能夠調用另一個構造函數初始化對象。
二、Static關鍵字
static修飾成員變量:若是有數據須要被共享給全部對象使用時,那麼就可使用static修飾。
static修飾成員函數:該靜態方法不依賴於任何對象就能夠進行訪問,非靜態成員方法/變量都必須依賴具體的對象纔可以被調用。
static修飾代碼塊:static關鍵字用來包裝靜態代碼塊以提高程序性能,靜態代碼塊能夠置於類中的任何地方,在類初次被加載的時候,會依次執行一次每一個靜態代碼塊。
三、Super關鍵字
super關鍵字表明瞭父類空間的引用,子父類存在着同名的成員時,在子類中默認是訪問子類的成員,能夠經過super關鍵字指定訪問父類的成員;建立子類對象時,默認會先調用父類無參的構造方法,能夠經過super關鍵字指定調用父類的構造方法。
四、Instanceof關鍵字
instanceof關鍵字的做用:判斷一個對象是否屬於指定的類別,對象與指定的類別必需要存在繼承或者實現的關係。在強制類型轉換以前一般會使用該關鍵字先判斷,而後在進行轉換。
五、Final關鍵字
final修飾類:代表該類不能被繼承,final類中的成員變量能夠根據須要設爲final,可是要注意final類中的全部成員方法都會被隱式地指定爲final方法。
final修飾方法:鎖定方法防止任何繼承類修改它的含義;第二個緣由是效率,父類的final方法是不能被子類所覆蓋的。
final修飾變量:成員變量被標識爲常量,只能被賦值一次,賦值後值再也不改變,當函數的參數類型聲明爲final時,說明該參數是隻讀型的。
六、Abstract關鍵字
abstract修飾類:該抽象類不能被實例化,抽象類與接口的不一樣之處,接口中不能有實例方法去實現業務邏輯,而抽象類中能夠有實例方法,並實現業務邏輯,抽象類不能使用final關鍵字修飾,由於final修飾的類是沒法被繼承,而對於抽象類來講就是須要經過繼承去實現抽象方法。
abstract修飾方法:抽象方法沒有方法主體,與接口方法有點相似,抽象方法不能用private修飾,由於抽象方法必須被子類實現,抽象方法也不能用static修飾,抽象類.抽象方法這樣的操做沒有意義。
一、設計模式
面向對象與設計模式是以前幾年很火熱的概念,面試時必問的問題,在編程中想用好設計模式,前提理解面向對象機制,都是對問題的高度向上抽象封裝,向下逐層解決實現,提升代碼的複用性、可讀性、靈活性、可維護性強,最主要是格調高。
二、IO流體系
若是想理解面向對象和設計模式的代碼,在Java中能夠重點讀讀IO流體系的API,頂級接口,向下實現,包裝類,擴展類,是真的把這兩大理念用到極致了,固然IO流最爲文件處理的核心,也值得讀讀源碼。
三、MVC開發模式
在MVC的開發模式中,業務層接口,業務層實現;數據庫接口,數據訪問實現,也是面向對象的最基礎用法接口與接口的實現類。
GitHub·地址 https://github.com/cicadasmile GitEE·地址 https://gitee.com/cicadasmile
推薦閱讀:編程體系整理
序號 | 項目名稱 | GitHub地址 | GitEE地址 | 推薦指數 |
---|---|---|---|---|
01 | Java描述設計模式,算法,數據結構 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |
02 | Java基礎、併發、面向對象、Web開發 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆ |
03 | SpringCloud微服務基礎組件案例詳解 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆ |
04 | SpringCloud微服務架構實戰綜合案例 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |
05 | SpringBoot框架基礎應用入門到進階 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆ |
06 | SpringBoot框架整合開發經常使用中間件 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |
07 | 數據管理、分佈式、架構設計基礎案例 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |
08 | 大數據系列、存儲、組件、計算等框架 | GitHub·點這裏 | GitEE·點這裏 | ☆☆☆☆☆ |