• 週日. 7 月 26th, 2026

天南訊息

IT 工作者的工作紀錄

dbase 2019 相同 的 funCTION 的名稱 在 不同的地方 出現. 會出現 怎樣的狀況

個人頭像照片

By伍芳左

7 月 19, 2026 #dBase
A MacBook with lines of code on its screen on a busy desk

dBASE 2019,有幾種情況:


1. 不同 Class,各自有相同 Function 名稱(最常見,也是建議的)

例如:

class CustomerForm of Form
   function Save()
      ? "Customer Save"
   return
endclass
另一個:
class ProductForm of Form
   function Save()
      ? "Product Save"
   return
endclass
呼叫:
oCust.Save()
oProd.Save()
結果:
Customer Save
Product Save
完全沒有衝突。

2. 繼承 (Inheritance)

例如:

class BaseForm of Form
   function Save()
      ? "Base"
   return
endclass
子類別:
class OrderForm of BaseForm
   function Save()
      ? "Order"
   return
endclass
呼叫:
o.Save()
執行的是:
Order
父類別的 Save() 被覆寫 (Override)。

如果要呼叫父類別:

class::Save()

3. 同一個 Class 裡有兩個同名 Function

例如:

class MyForm of Form

   function Save()
   return

   function Save()
   return

endclass

不可以。

通常編譯就會報錯:

Duplicate method

4. 不同 PRG 有相同 Global Function

例如

A.PRG

function Test()
B.PRG
function Test()
如果兩個都被編譯或載入,

通常會發生:

  • Duplicate Function
  • 後載入的覆蓋前面的(依載入方式而定

這種不建議。


5. Local Function 與 Class Method

例如:

function Save()

class MyForm of Form
   function Save()
endclass
這是不同的命名空間。
Save()          // Global Function

this.Save()     // Class Method
互不影響。
個人頭像照片

By 伍芳左

MIS, ERP Pro... RHCE Member (7.2)

發表迴響