在 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
互不影響。