1. Tapi itu belum semuanya.
Misalkan Cowkelas 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 Cowkelas dipanggil pada Whaleobjek, printNamemetode kelasWhale yang digunakan, bukan yang ada di Cowmetode.
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 Whaletampilan kelas setelah menerapkan pewarisan dan penggantian metode:
|
Inilah Whaletampilan kelas setelah menerapkan pewarisan dan penggantian metode: Kami tidak tahu tentang printNamemetode 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 Objectkelas |
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 Cowatau yang ada di Whalekelas — tidak ditentukan oleh tipe variabel, tetapi oleh tipe objek yang dirujuk oleh variabel tersebut.
Variabel Cowmenyimpan referensi ke Whaleobjek, dan printName()metode yang didefinisikan di Whalekelas 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