3/18/14

Field


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:

Iklan

Iklan

Iklan