1. Tapi itu belum semuanya.
Misalkan Cow
kelas memiliki printAll()
metode yang memanggil dua metode lainnya. Maka kode akan bekerja seperti ini:
Kode | Keterangan |
---|---|
|
|
|
Output layar akan menjadi:
|
Perhatikan bahwa ketika printAll()
metode di Cow
kelas dipanggil pada Whale
objek, printName
metode kelasWhale
yang digunakan, bukan yang ada di Cow
metode.
Hal utama bukanlah kelas tempat metode ditulis, melainkan jenis (kelas) objek tempat metode dipanggil.
Hanya metode non-statis yang dapat diwariskan dan diganti. Metode statis tidak diwariskan dan karenanya tidak dapat diganti.
Inilah Whale
tampilan kelas setelah menerapkan pewarisan dan penggantian metode:
|
Inilah Whale tampilan kelas setelah menerapkan pewarisan dan penggantian metode: Kami tidak tahu tentang printName metode lama apa pun. |
2. Pengetikan
Ada hal yang lebih menarik di sini. Karena kelas mewarisi semua metode dan data dari kelas induknya, referensi ke objek kelas anak dapat disimpan dalam (ditugaskan ke) variabel yang tipenya sama dengan kelas induk (dan induk dari induk, dll. — sampai kelas Object
). Contoh:
Kode | Keterangan |
---|---|
|
Output layar akan menjadi:
|
|
Output layar akan menjadi:
|
|
Output layar akan menjadi:
Metode ini toString() diwarisi dari Object kelas |
Ini adalah properti yang sangat berharga: beberapa saat kemudian Anda akan memahami cara menggunakannya dalam praktik.
3. Memanggil metode pada suatu objek
Ketika sebuah metode dipanggil pada sebuah variabel, metode tersebut sebenarnya dipanggil pada sebuah objek. Mekanisme ini disebut pengiriman metode dinamis.
Begini tampilannya:
Kode | Keterangan |
---|---|
|
Output layar akan menjadi:
|
|
Output layar akan menjadi:
|
Perhatikan bahwa implementasi spesifik dari printName()
metode yang dipanggil — yang ada di Cow
atau yang ada di Whale
kelas — tidak ditentukan oleh tipe variabel, tetapi oleh tipe objek yang dirujuk oleh variabel tersebut.
Variabel Cow
menyimpan referensi ke Whale
objek, dan printName()
metode yang didefinisikan di Whale
kelas adalah apa yang disebut.
Ini tidak terlalu jelas. Ingat aturan utama:
Himpunan metode yang tersedia untuk dipanggil pada variabel ditentukan oleh tipe variabel. Dan implementasi metode spesifik yang dipanggil ditentukan oleh jenis/kelas objek yang dirujuk oleh variabel.
Anda akan menemukan ini sepanjang waktu, jadi semakin cepat Anda mengingatnya, semakin baik.
GO TO FULL VERSION