1. Tetapi bukan itu sahaja.
Katakan Cowkelas mempunyai printAll()kaedah yang memanggil dua kaedah lain. Kemudian kod akan berfungsi seperti ini:
| Kod | Penerangan |
|---|---|
|
|
|
Output skrin akan menjadi:
|
Ambil perhatian bahawa apabila printAll()kaedah dalam Cowkelas dipanggil pada Whaleobjek, printNamekaedah kelasWhale digunakan, bukan kaedah dalam Cowkaedah.
Perkara utama bukanlah kelas kaedah ditulis, tetapi jenis (kelas) objek yang kaedah dipanggil.
Hanya kaedah bukan statik boleh diwarisi dan ditindih. Kaedah statik tidak diwarisi dan oleh itu tidak boleh ditindih.
Inilah Whalerupa kelas selepas menggunakan warisan dan kaedah mengatasi:
|
Begini Whalerupa kelas selepas menggunakan warisan dan kaedah mengatasi: Kami tidak tahu tentang sebarang printNamekaedah lama. |
2. Typecasting
Terdapat perkara yang lebih menarik di sini. Oleh kerana kelas mewarisi semua kaedah dan data kelas induknya, rujukan kepada objek kelas anak boleh disimpan dalam (ditugaskan kepada) pembolehubah yang jenisnya sama dengan kelas induk (dan induk induk, dsb. — sehingga ke Objectkelas). Contoh:
| Kod | Penerangan |
|---|---|
|
Output skrin akan menjadi: |
|
Output skrin akan menjadi: |
|
Output skrin akan menjadi:Kaedah ini toString()diwarisi daripada Objectkelas |
Ini adalah harta yang sangat berharga: sedikit kemudian anda akan memahami cara menggunakannya dalam amalan.
3. Memanggil kaedah pada objek
Apabila kaedah dipanggil pada pembolehubah, kaedah itu sebenarnya dipanggil pada objek. Mekanisme ini dipanggil penghantaran kaedah dinamik.
Begini rupanya:
| Kod | Penerangan |
|---|---|
|
Output skrin akan menjadi: |
|
Output skrin akan menjadi: |
Ambil perhatian bahawa pelaksanaan khusus kaedah printName()yang dipanggil — yang dalam Cowatau yang dalam Whalekelas — tidak ditentukan oleh jenis pembolehubah, tetapi oleh jenis objek yang dirujuk oleh pembolehubah itu.
Pembolehubah Cowmenyimpan rujukan kepada Whaleobjek, dan printName()kaedah yang ditakrifkan dalam Whalekelas ialah apa yang dipanggil.
Ini tidak begitu jelas. Ingat peraturan utama:
Set kaedah yang tersedia untuk dipanggil pada pembolehubah ditentukan oleh jenis pembolehubah. Dan pelaksanaan kaedah khusus yang dipanggil ditentukan oleh jenis/kelas objek yang dirujuk oleh pembolehubah.
Anda akan menghadapi ini sepanjang masa, jadi lebih cepat anda mengingati ini, lebih baik.
GO TO FULL VERSION