Sepertinya untuk pembahasan field tidak akan panjang lebar karena field seperti variable yang
dimiliki kelas dan tentunya sama seperti variabel pada umumnya dapat
dideklarasikan dengan berbagai tipe termasuk objek dan kelas.hanya disini saya
akan memberikan sebuah kasus yang perlu kita memahami.
type
TAncestor = class
Value: Integer;
end;
TDescendant =
class(TAncestor)
Value:
string; // hides the inherited Value
field
end;
var
MyObject:
TAncestor;
begin
MyObject := TDescendant.Create;
MyObject.Value :=
'Hello!' // error
(MyObject as
TDescendant).Value := 'Hello!' //
works!
end;
kita dapat melihat contoh diatas dimana nama field yang sama
antara parent dan turunannya.
Value sebagai field dari Tancestor memiliki type integer
sedangkan Tdecendant memiliki field beranama value tapi bertipe string, dengan
begitu bila turunan yang berikutnya akan memiliki duabuah field yang diwariskan
memiliki nama yang sama tapi memiliki type yang berbeda, pada kasus ini secara
devault kompiler akan menterjemahkan value sebagai type integer.oleh karena itu
kita harus secara detail dalam penggunaan field tersebut seperti (MyObject as TDescendant).Value;
No comments:
Post a Comment