開發者學堂課程【5天玩轉Java 面向對象程式設計訓練營第三課時:OOP 三大特征和檔案程式設計面試題】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/349/detail/4083OOP 三大特征和檔案程式設計面試題
内容簡介
一、課程回顧
二、面向對象的三大特征
三、Java的 類 繼承
四、進階面試題 多态:實作機制
五、抽象類 抽象的類型 無法具體化接口 結束合約
六、Java 檔案程式設計 File 讀寫檔案編輯器
一、課程回顧:
1、Java 是由SUN 公司于1995年5月推出的進階程式設計語言,最初的版本是以OAK來命名的,正式推出使用之後更名為Java,Java 之父是詹姆斯•高斯林,JavV名字的由來是
印度尼西亞 爪哇島的
英文名稱,因盛産
咖啡而聞名。
Java語言中的許多庫類
名稱,多與咖啡有關:如
JavaBeans(
咖啡豆)、
NetBeans(網絡豆)以及ObjectBeans(對象豆)等等。
SUN和JAVA 的辨別也正是一杯正冒着熱氣的咖啡。
2、JDK 是Java 開發工具包 (Java Development Kit ) 的縮寫。從字面意思翻譯過來就是java 開發的工具。它是一種用于建構在 Java 平台上釋出的應用程式;JVM 是Java 虛拟機的英文簡稱。他是java 運作環境的一部分。它是一個虛構出來的計算機,是通過在實際的計算機上仿真模拟各種計算機功能來實作的。
3、8大基本類型:整型的byte、shoru、int、long;字元型的char;浮點型的float、double、;布爾型boolean。Java很多的資料類型都是從國小數學引進來的。
4、變量指的是國小數學的x、y、z等等一系列的代數符号。
5、C語言中的函數Function 本意是:函數就是 C 語言的子產品,一塊一塊的,有較強的獨立性,可以互相調用,換句話說,C 語言中,一個函數裡面可以調用 n 個函數,即大函數調用小函數,小函數又調用“小小”函數。這就是結構化程式設計,是以面向過程的語言又叫結構化語言。
6、對象Object 本質上是代表了某個東西,作為一個程式設計語言的話,為了更好的使用代碼去展現要處理的資料而引用了Object。
7、Class 是作為歸類而産生的,把不同類型的代碼進行分類。
1、繼承:子類繼承父類的代碼
繼承性是子類自動共享父類資料結構和方法的機制,這是類之間的一種關系。在定義和實作一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的内容作為自己的内容,并加入若幹新的内容。
2、封裝:Class+修飾符封裝代碼
即隐藏對象的屬性和實作細節,僅對外公開接口,控制在程式中屬性的讀和修改的通路級别;将抽象得到的資料和行為(或功能)相結合,形成一個有機的整體,也就是将資料與操作資料的源代碼進行有機的結合,形成“類”,其中資料和函數都是類的成員。
在電子方面,封裝是指把矽片上的電路管腳,用導線接引到外部接頭處,以便與其它器件連接配接。
3、多态:同一種行為,多種代碼實作
多态性是指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。
不同的對象,收到同一消息可以産生不同的結果,這種現象稱為多态性。
三、Java 的 類 繼承
1、Java定義基類Animal
舉例:

Java定義狗Dog繼承自Animal基類
其中extend 是繼承關鍵字其文法格式是:修飾符 class 子類 extends 父類,在父類中公開的屬性以及方法都能被子類繼承。
在以上的這個例子裡面extend 的繼承類就是Animal。
2、測試Java 子類行為多态
行為多态就是參數的個數和類型的差異,在程式設計中指的是同一種行為的多種實作。
3、Java 的Class 類繼承
繼承是為了更好的代碼重用,Java 的子類可以繼承父類,并且Java 所有的方法都是預設的Virtual 的
舉例:淘寶訂單
繼承父類訂單Order
舉例:測試面向對象
其中的main 函數又稱主函數,是程式執行的起點,main 是相對來說的,如同音學理論之主調于泛音,泛音即程式中的除main 之外的其他函數,迎合人們的思考方式而生成的而非必定的模式。
有主有次,執行起來條清縷析,既可将程式子產品化又實作了一個閉合的整體。
舉例:行為擴充,方法重載,同一個類型的同名方法不同實作
在這裡面子類和父類的同名方法,參數相同的重寫
以上是用網際網路訂單的例子來進行講解的。
面向對象程式設計提供了很多不同的機制去支援代碼的重用和靈活擴充的機制,本質上所有的程式設計語言的出發點都是一樣的,包括程式設計對象和程式設計原子都是一樣的,隻是在文法上會有些許的差別。
多态本質指的是同一種行為的多種實作,多态是程式設計語言的一個抽象表現。
| 面試題:面向對象行為多态
1、多态是行為(功能、函數、方法)的多态;
2、指為同名的方法提供不同的實作代碼;
3、我們不關心方法的具體實作,而是僅僅依靠名稱來進行調用操作;
4、多态是面向對象程式設計的最重要特征(繼承、封裝、多态);
5、Abstract 抽象方法和Virtual虛方法是多态的基礎;
6、Java 和C#提供三種多态能力分别是:
①接口多态:依賴實作接口來提供多态能力;
②繼承多态:依賴繼承來提供多态能力
③抽象多态:依賴抽象類來提供多态能力。
接口:部分限制 合約 約定
接口是功能的集合,同樣可看做是一種特殊的資料類型,是比抽象類更為抽象的類。
在JAVA程式設計語言中是一個抽象類型,是抽象方法的集合。接口通常以interface 來聲明。
一個類通過繼承接口的方式,進而來繼承接口的抽象方法。
| 面試題:Java 多态實作方式
1、Java 多态概念:
多态性是面向對象程式設計中的一個重要特性,主要是用來實作動态聯編的。換句話說,就是程式的最終狀态隻有在執行過程中才被決定,而非在編譯期間就決定了。這對于大型系統來說能提高系統的靈活性和擴充性。
多态允許相同類域的不同對象對同一消息做出響應。即同一消息可以根據發送對象的不同而采用多種不同的行為方式。
多态可以讓我們不用關心某個對象到底是什麼具體類型,就可以使用該對象的某些方法,進而實作更加靈活的程式設計,提高系統的可擴充性。
如果對象的編譯時類型和運作時類型不一緻,就會造成多态。
2、多态是行為的多态;
3、重載Overlodading:
同一個類中,兄弟方法,方法名相同,參數個球、類型、順序不同;
4、重寫Override:
子類和父類,父子關系,子類重新實作父類中同名方法;
5@Override 标記到重寫的方法上。
抽象類的本質是抽象方法隻能定義在抽象類中,抽象的方法和抽象的類必須由關鍵字abstract 修飾,抽象類值隻定義方法聲明,不定義功能主題(即方法的實作),抽象類不可以被建立對象,抽象類隻有子類繼承了父類中的方法,并且對其中的所有抽象方法進行了重寫。
該子類才不是抽象類,隻要不是重寫當中的所有抽象方法,那麼這個子類還是抽象類。
1、Java 動物類Aminal
其中抽象類代表同一類别,接口代表一種部分限制。
| 面試題:抽象類和接口的差別
1、執行個體方法:建立對象才能調用的方法;
2、靜态方法:Sratic 修飾的方法,屬于類Class,不需要實化;
3、虛方法:virtual,介于抽象和實體方法之間,可以重寫;
4、除了static、final、private修飾的所有方法都是。
5、Abstract 抽象類不可以被執行個體化,interface接口也不可以;
6、抽象類隻允許單繼承,接口可以多繼承;
7、Abstracr 抽象類有具體方法實作,接口隻有方法聲明
8、抽象類使用關鍵字extends,借口繼承使用implements。
檔案是資料的一種存儲形式。
1、Java、io File資料讀寫操作
1、Java、io包幾乎包含了所有操作輸入、輸入需要的類;
2、所有這些流類代表了輸入源和輸出目标;
3、Java、io包File檔案類庫的流支援很多種格式,比如:基本類型、對象、本地化字元集等;
4、一個流可以了解為一個資料的序列;
5、輸入流表示從一個源讀取資料,輸出流表示向一個目标寫資料;
6、Java 為I/O提供了強大且靈活的支援、類庫;
7、使其更廣泛地應用到檔案傳輸和網絡程式設計中。
舉例:Java FileWriter 寫入檔案