Hari ini saya berkeliaran di sekitar forum CSDN dan menemukan posting seperti itu "Saya baru saja melihat beberapa baris kode yang sangat indah dari master seni bela diri, dan saya tidak bisa mengetahuinya, saya harap Anda dapat memberi saya beberapa saran" dengan Sikap belajar dari semua master seni bela diri, saya lihat setelah menyelesaikan seluruh posting, saya menemukan bahwa kontennya sangat klasik.
jenis
TStringGridex = class (tStringGrid);
Prosedur TFORM1.BUTTON1CLICK (Pengirim: Tobject);
Mulai
Jika tStringGridex (StringGrid1) .rowCount> 5
TStringGridex (StringGrid1) .deleterow (5);
akhir;
-------------------------------------------------- --------
Ini adalah kode untuk menghapus baris kode di StringGrid. Saya mengerjakan masalah ini selama 2 jam tetapi tidak bisa menyelesaikannya. Tetapi mengapa tStringGridex = class (tStringGrid); Jelas juga merupakan tstringgrid yang diwariskan, yang sama dengan TStringGrid? Kepalaku terlalu besar! Semoga Anda memberi saya beberapa nasihat!
Di atas adalah konten dari pertanyaan poster. Delphi.
1. Anggota TSTRINGGRIDEX yang dilindungi dapat diakses dalam TForm karena mereka didefinisikan di unit yang sama.
2. Anggota TStringGrid yang dilindungi tidak dapat diakses dalam bentuk T karena mereka tidak didefinisikan di unit yang sama.
3. Sejak tStringGridex = class (tStringGrid), mengakses anggota yang dilindungi dari TStringGridex di sini setara dengan mengakses anggota yang dilindungi dari TStringGrid
4. TStringGridex hanyalah perantara, dan fungsinya tidak meluas, tetapi memperkenalkan ruang lingkup TStringGrid ke dalam unit ini, sehingga TFOR dapat mengakses anggota TSTRINGGRID yang dilindungi.
Pandangan Zhangmenyi adalah bahwa anggota Delphi yang dilindungi dan swasta terlihat oleh berbagai kelas dan objek di unit yang sama, dan anggota yang dilindungi dapat terlihat di unit subclass anggota, sehingga TStringGridex hanya mewarisi TStringGrid dan tidak melakukannya . Modifikasi apa pun juga dapat membuat anggota yang dilindungi di TStringGrid terlihat di unit TStringGridex (alasan lain adalah bahwa TStringGrid tidak didefinisikan dalam unit ini dibuka.), Masalahnya terpecahkan. Kita juga bisa melihat karakteristik Delphi yang berorientasi objek dari ini.
Meskipun nyaman untuk pengembangan, itu dapat membingungkan pemula
Bahkan tidak cukup ketat
Tapi bagaimanapun, Delphi tidak lagi dalam kemuliaan, mari kita gunakan saja
Komentar Zhang Men San: Tidak ada hal yang sempurna! Hanya ada hal -hal yang cocok!
Komentar Zhangmen 4: Metode yang dilindungi umumnya disembunyikan, sehingga tidak mungkin untuk secara langsung menghasilkan instance kelas, tetapi di Delphi, kelas yang terletak di unit yang sama secara otomatis dianggap sebagai kelas teman, dan dapat mengakses metode yang dilindunginya , sehingga Anda dapat melihat metode yang dilindungi dengan menulis implementasi subkelas di unit yang sesuai.