大家在delphi或c#中創建類時可以使用一個叫屬性(property)的東東,可以用它來訪問類的私有成員(當然是用方法控制的),
如下:
public class person
{
private int _age;
public int age
{
get
{
return _age;
}
set
{
if(value > 0)
_age = value;
}
}
其好處我就不多言說了,相信各種資料說的比我解釋的好,大家也很清楚.
在pb中創建對象的時候有沒有這樣的東東呢,我們提出疑問:屬性(property)是否存在?
我找呀找,終于在朋友的幫助下找到了一個好東東,它就是indirect關鍵字,有了它就可以幫助我們在pb中實現屬性(property
)這個東東了.
indirect到底怎么用呢,我們來具體操作一下吧;)
1. 創建一個類,姑且叫uo_person吧.
2. 聲明一個實例變量private integer _age (實例變量聲明在declare --> instance variables處,不用我多說,這里是廢
話了^_^)
3. 創建兩個個對象函數:
//=================================================
// 設置_age
//-------------------------------------------------
// return: integer 固定約束,要求必須為integer
//-------------------------------------------------
// 說明:函數語法不是按pb的來的,我是要表達下意思而已
//=================================================
private integer of_setage(integer aiage)
{
if aiage > 0 then
_age = aiage
return 1
else
return -1
end if
}
//================================================
// 讀取_age
//------------------------------------------------
// return: integer 類型與私有實例字段一致
//================================================
private integer of_getage()
{
return _age
}
4. 在實例變量聲明處聲明一個特殊字段(相當于屬性),格式如下:
public indirect integer age{of_setage(*value),of_getage()}
到此,我們帶屬性訪問的類就完成了.
寫一段代碼測試一下;)
uo_person luo_test
luo_test = create uo_person
luo_test.age = 25
messagebox('info','my age is' + string(luo_test.age))
成功顯示我的年齡,大功告成.
這樣的類做起來有點麻煩,可是它有不少的好處,大家在實際應用中遇到了需要這樣處理的問題要想到它,還要想到我,嘿嘿;)
網站運營seo文章大全提供全面的站長運營經驗及seo技術!