面向對象與面向過程 && Java與C++

一. 面向過程和麪向對象

1. 二者區別是什麼

  1. 面向過程就是,分析出解決問題所需要的步驟,然後用函數把這些步驟一個一個實現,使用的時候一個一個依次調用就可以了
  2. 面向對象就是,把構成問題的事物分解成各個對象,建立對象的目的不是爲了完成一個步驟,而是爲了描述某個事物在解決問題的步驟中的行爲
  3. 面向對象是以功能來劃分問題的,而不是步驟

2. 二者優缺點分別是什麼

  1. 面向過程:
    (1) 優點:性能比面向對象要高,因爲類調用時需要實例化,開銷比較大,比較消耗資源。比如Linux/Unix都是採用面向對象開發的,性能就是最主要的原因
    (2) 缺點:沒有面向對象易維護、易擴展、易複用
  2. 面向對象:
    (1) 優點:易維護、易擴展、易複用。由於面向對象有繼承、封裝、多態的特性,可以設計出低耦合的系統,使系統更加靈活且易於維護
    (2) 缺點:性能要低於面向過程

二. 面向對象的特性

1. 封裝

封裝是指,將客觀事物抽象成類,每個類對自身的數據和方法實行保護。類可以把自己的數據和方法只讓可信的類或對象操作,對不可信的進行信息隱藏

2. 繼承

新類繼承了原始類的特性,新類既可以從它的基類那裏繼承方法和實例變量,也可以修改或增加新方法使之更適合特殊的需要

3. 多態

多態是指,允許將子類型的實例賦值給父類。多態的作用就是爲了實現代碼重用。
實現多態有兩種方式:重載和覆蓋

三. Java語言的優點

  1. Java是面向對象的語言
  2. 平臺無關性。Java可以“一次編譯、到處運行”,因爲Java是解釋型語言,編譯器會把Java代碼變成“中間代碼”,然後再Java虛擬機(JVM)上結束執行。由於中間代碼與平臺無關,所以Java可以很好的跨平臺執行,具有很好的可移植性。
  3. 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++之間的區別

兩者都是面嚮對象語言,都具有繼承、封裝、多態的特性。它們的區別如下:

  1. Java是解釋型語言,代碼經過Java編譯器編譯成字節碼,再由JVM解釋執行。C++爲編譯型語言,代碼經過編譯和鏈接後生成可執行的二進制代碼。因此Java的執行速度比C++慢,但Java可以跨平臺執行
  2. Java中沒有指針的概念,從而使程序更加安全
  3. Java不支持多重繼承,但可以可以實現多個接口。C++是允許多重繼承的
  4. C++需要開發人員去管理內存的分配,而Java提供了垃圾回收器來實現垃圾的自動回收,不需要程序顯示地管理內存的分配
  5. Java不支持自動強制類型轉換,必須由開發人員進行顯示地強制類型轉換。而C++支持自動強制類型的轉換,但這會導致程序的不安全
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章