11. 在物件導向程式語言與非物件導向程式語言中,下列何者是兩者都有的技術?
(A) Encapsulation
(B) Recursion
(C) Overloading
(D) Polymorphism

答案:登入後查看
統計: A(5), B(50), C(17), D(9), E(0) #3246966

詳解 (共 2 筆)

#6121098
Encapsulation(封裝):...
(共 377 字,隱藏中)
前往觀看
10
0
#6427077

在物件導向程式語言(Object-Oriented Programming, OOP)和非物件導向程式語言(Non-Object-Oriented Programming)中,有些技術是共通的,而有些則是特定於 OOP 的。

讓我們逐一分析各選項:

  • (A) Encapsulation (封裝)

    • OOP 語言:封裝是物件導向的三大基本特性之一(另外兩個是繼承和多型),它將資料(屬性)和操作資料的方法(行為)綁定在一起,並對外部隱藏內部實現細節,只暴露必要的介面。
    • 非 OOP 語言:雖然非 OOP 語言(如 C 語言)可以使用結構體(struct)來組合資料,並透過函式來操作這些資料,但它通常不具備像 OOP 那樣嚴格的訪問控制(如 private, protected)和將方法「內建」於資料結構的概念。因此,嚴格意義上的封裝是 OOP 的主要特性。
  • (B) Recursion (遞迴)

    • OOP 語言:遞迴是一種函式呼叫自身的程式設計技術。所有主流的 OOP 語言(如 Java, C++, Python 等)都支持遞迴。
    • 非 OOP 語言:遞迴是一種通用的演算法設計方法,與程式語言是否為物件導向無關。許多非 OOP 語言(如 C, Fortran, Lisp 等)也廣泛支持並使用遞迴。
  • (C) Overloading (重載)

    • OOP 語言:重載(函式重載或運算子重載)是指在同一個作用域內,允許有多個同名的函式或運算子,但它們的參數列表(數量、型別或順序)不同。這是許多 OOP 語言(如 C++, Java)的特性,屬於多型的一種形式(編譯時多型)。
    • 非 OOP 語言:傳統的非 OOP 語言(如標準 C 語言)通常不直接支援函式重載的概念,你不能定義兩個同名但參數不同的函式。雖然有些語言可能有類似的機制,但「重載」作為一個普遍技術而言,更多地與支援靜態多型的 OOP 語言相關。
  • (D) Polymorphism (多型)

    • OOP 語言:多型是 OOP 的核心概念之一,它允許物件根據其在運行時的實際型別表現出不同的行為。這通常透過繼承、虛擬函式(virtual functions)或介面實現(運行時多型),以及函式重載和運算子重載(編譯時多型)。
    • 非 OOP 語言:非 OOP 語言不具備物件、繼承和虛擬函式的概念,因此不支援 OOP 意義上的多型。

綜合來看,遞迴是一種普遍的演算法設計和程式設計技術,它不依賴於物件導向的特定範式,因此在物件導向和非物件導向程式語言中都是共通的。

最終答案是 B

1
0