一. 面向過程和麪向對象
1. 二者區別是什麼
- 面向過程就是,分析出解決問題所需要的步驟,然後用函數把這些步驟一個一個實現,使用的時候一個一個依次調用就可以了
- 面向對象就是,把構成問題的事物分解成各個對象,建立對象的目的不是爲了完成一個步驟,而是爲了描述某個事物在解決問題的步驟中的行爲
- 面向對象是以功能來劃分問題的,而不是步驟
2. 二者優缺點分別是什麼
- 面向過程:
(1) 優點:性能比面向對象要高,因爲類調用時需要實例化,開銷比較大,比較消耗資源。比如Linux/Unix都是採用面向對象開發的,性能就是最主要的原因
(2) 缺點:沒有面向對象易維護、易擴展、易複用 - 面向對象:
(1) 優點:易維護、易擴展、易複用。由於面向對象有繼承、封裝、多態的特性,可以設計出低耦合的系統,使系統更加靈活且易於維護
(2) 缺點:性能要低於面向過程
二. 面向對象的特性
1. 封裝
封裝是指,將客觀事物抽象成類,每個類對自身的數據和方法實行保護。類可以把自己的數據和方法只讓可信的類或對象操作,對不可信的進行信息隱藏
2. 繼承
新類繼承了原始類的特性,新類既可以從它的基類那裏繼承方法和實例變量,也可以修改或增加新方法使之更適合特殊的需要
3. 多態
多態是指,允許將子類型的實例賦值給父類。多態的作用就是爲了實現代碼重用。
實現多態有兩種方式:重載和覆蓋
三. Java語言的優點
- Java是面向對象的語言
- 平臺無關性。Java可以“一次編譯、到處運行”,因爲Java是解釋型語言,編譯器會把Java代碼變成“中間代碼”,然後再Java虛擬機(JVM)上結束執行。由於中間代碼與平臺無關,所以Java可以很好的跨平臺執行,具有很好的可移植性。
- Java提供了很多內置的類庫
(1) java.lang: Java中的基本類庫,如String、Boolean、System、Math、Exception、Thread等,該類庫是不需要導入的,其他類庫需要導入
(2) java.util: 提供使用方法及數據結構,如Arrays、Collection、HashTable、Data等
(3) java.io: 通過數據流、文件系統實現對想序列的系統輸入輸出,如File、FileInputStream、IOException等
(4) java.sql: 用於訪問及處理數據庫數據的類
(5) java.math: 簡明的整數算術及十進制算數的基本函數
四. Java和C++之間的區別
兩者都是面嚮對象語言,都具有繼承、封裝、多態的特性。它們的區別如下:
- Java是解釋型語言,代碼經過Java編譯器編譯成字節碼,再由JVM解釋執行。C++爲編譯型語言,代碼經過編譯和鏈接後生成可執行的二進制代碼。因此Java的執行速度比C++慢,但Java可以跨平臺執行
- Java中沒有指針的概念,從而使程序更加安全
- Java不支持多重繼承,但可以可以實現多個接口。C++是允許多重繼承的
- C++需要開發人員去管理內存的分配,而Java提供了垃圾回收器來實現垃圾的自動回收,不需要程序顯示地管理內存的分配
- Java不支持自動強制類型轉換,必須由開發人員進行顯示地強制類型轉換。而C++支持自動強制類型的轉換,但這會導致程序的不安全