Você está na página 1de 15

Java Fundamental

Pelajaran ini mencakup topik-topik berikut:

Terapkan referensi superclass ke subclass benda

Tulis kode untuk menimpa metode

Gunakan metode dinamis dispatch untuk mendukung polimorfisme

Buat metode abstrak dan kelas

Mengenali metode override yang benar

Pelajaran ini mencakup topik-topik berikut:

Gunakan pengubah akhir

Jelaskan tujuan dan pentingnya kelas Object

Tulis kode untuk applet yang menampilkandua segitiga warna yang berbeda

Jelaskan referensi objek

Ulasan Warisan

Ketika satu kelas mewarisi dari yang lain, subclass "adalah-sebuah" jenis
supernya.

Objek subclass dapat dirujuk menggunakan referensi superclass, atau jenis.

Belajarlah lagi
Kunjungi halaman tutorial Oracle untuk mempelajari lebih lanjut:

Warisan:

http: // docs oracle com / JavaSE / tutorial / java / IandI / subclass .oracle.com /
JavaSE / tutorial / java / IandI / subclasses.html

Poly p morphism:

http://docs.oracle.com/javase/tutorial/java/IandI/polymorhism.html
Contoh warisan
Jika kelas diciptakan untuk kelas sepeda dan kelas roadbike yang memanjang
sepeda, referensi jenis sepeda dapat referensi objek roadbike (lihat di bawah).

Karena roadbike "adalah-sebuah" jenis sepeda, itu sempurna

hukum untuk menyimpan benda roadbike sebagai referensi sepeda.

Jenis variabel (atau referensi) tidak menentukan

jenis sebenarnya dari objek yang mengacu pada.

Contoh Warisan (cont.)

Oleh karena itu, referensi sepeda, atau variabel, mungkin atau mungkin tidak
mengandung objek dari jenis sepeda superclass karena dapat berisi subclass dari
sepeda.

polimorfisme
Ketika variabel atau referensi dapat merujuk kepada berbagai jenis benda
disebut polimorfisme.

Polimorfisme adalah istilah yang berarti "banyak bentuk".

Dalam kasus pemrograman, polimorfisme memungkinkanvariabel untuk


merujuk ke banyak berbagai jenis objek, yang berarti mereka dapat memiliki
beberapa bentuk.

Sebagai contoh, karena roadbike "adalah-sebuah" sepeda, ada dua referensi


yang mungkin yang menentukan jenis objek itu(Sepeda atau roadbike).

Polimorfisme dan Nesting Dolls


Polimorfisme dapat divisualisasikan seperti satu set boneka bersarang: Set
boneka berbagi jenis dan penampilan, tetapi semuam unik dalam beberapa cara.
Setiap boneka memiliki bentuk yang sama, dengan ukuran yang ditentukan
oleh boneka itu harus sesuai dalam.

Setiap boneka kecil disimpan dalam boneka yang lebih besar berikutnya. Dari
luar Anda tidak melihat boneka kecil, tapi Anda dapat membuka setiap boneka
untuk menemukan boneka yang lebih kecil di dalam.

Superclasses dan Subclass


Dalam cara yang sama, subclass dapat "cocok" dalam referensi jenis superclass.
Sebuah variabel superclass dapat menahan, atau toko, subclass s 's objek,
sambil melihat dan bertindak seperti superclass.

Variabel superclass
Jika Anda "membuka" variabel superclass, atau memanggil salah satu nya
metode, Anda akan menemukan bahwa Anda benar-benar memiliki subclass
objek yang tersimpan di dalamnya.

Misalnya, dengan boneka bersarang, Anda tidak dapat melihat boneka kecil
sampai Anda membuka boneka yang lebih besar. jenisnya mungkin bingung.

Ketika kode Java dikompilasi, Java tidak memeriksa untuk melihat apa jenis
(supertype atau subtipe) dari objek di dalam variabel.
Variabel superclass (cont.)
Ketika kode Java dijalankan, Jawa akan "membuka" untuk melihat apa jenis
objek di dalam referensi, dan panggilan metode yang tipe itu.

Ketidakpastian Ketika Mengacu Objects


Ada manfaat ketidakpastian ketika referensi objek yang berbeda pada waktu
kompilasi. Sebagai contoh:

Anda menulis sebuah program yang menghitung tabung yang berbeda panjang
dari frame sepeda, mengingat pengukuran pengendara dan jenis sepeda yang
diinginkan (roadbike atau MountainBike).

Anda ingin daftar untuk melacak berapa banyak objek sepeda Anda telah
membangun. Anda ingin hanya satu daftar, bukan dua yang terpisah daftar
untuk setiap jenis sepeda.

Bagaimana Anda membangun daftar itu? Array, mungkin?

Apa yang bermasalah tentang menggunakan sebuah array untuk membangun


daftar?

Mengapa Tidak Gunakan Array Kelas Objects?


Array adalah kumpulan elemen dari jenis yang sama, seperti sebagai kumpulan
bilangan bulat, ganda, atau Sepeda.

Meskipun dimungkinkan untuk memiliki sebuah array dari objek yang mereka,
mereka harus jenis yang sama.

Ini bagus untuk kelas yang tidak diperpanjang.

Mengapa Tidak Gunakan Array Kelas Objects? (Cont.)


Polimorfisme memecahkan masalah ini.

Sejak roadbike dan MountainBike adalah kedua jenis benda sepeda,


menggunakan array referensi sepeda untuk menyimpan daftar sepeda
Anda telah membangun. Kedua jenis sepeda dapat ditambahkan ke array
ini.
Referensi objek
Kelas Object adalah superclass tertinggi di Jawa, karena tidak
memperpanjang kelas lain. Akibatnya, setiap kelas dapat disimpan dalam
sebuah Obyek referensi.

Dalam contoh array ini, juga berlaku untuk menyimpan sepeda kami di
array referensi Object. Namun, ini membuat kami tipe array bahkan lebih
bingung dan harus dihindari, dan harus dihindari kecuali ada alasan untuk
melakukannya.

Metode utama dari Object


Sejak Obyek adalah superclass dari semua kelas, kita tahu bahwa semua
kelas mewarisi metode dari Object.

Dua metode ini sangat berguna, seperti sama () metode dan metode
untuk String ().

Equals () metode memungkinkan kita untuk memeriksa apakah dua


referensi yang mengacu pada objek yang sama.
Untuk String () metode mengembalikan sebuah String yang
mewakili objek. String yang memberikan informasi dasar tentang
objek seperti itu kelas, nama, dan kode hash yang unik

Override atau Mendefinisikan ulang Metode


Meskipun equals () dan String () metode yang berguna, mereka
kehilangan fungsi untuk digunakan lebih spesifik.

Untuk kelas sepeda kita mungkin ingin menghasilkan String, kita


mungkin ingin menghasilkan String yang berisi nomor model,
warna, tipe frame, dan harga. Menggunakan metode dari objek tidak
akan kembali informasi ini.
Untuk String () metode di kelas Object mengembalikan representasi
String dari lokasi objek dalam memori.
Daripada menciptakan sebuah metode dengan nama lain, kita dapat
menimpa ke String () metode, dan mendefinisikan kembali itu sesuai
kami

Metode utama
Override metode adalah cara mendefinisikan ulang metode dengan jenis
kembali sama dan parameter dengan menambahkan, atau override logika
yang ada, dalam metode subclass.

Utama berbeda dari overloading metode.

Overloading metode berarti programmer terus yang nama yang


sama (misalnya untuk String ()), tapi perubahan parameter input
(metode tanda tangan).
Override dasarnya menyembunyikan metode orang tua dengan
tanda tangan yang sama, dan itu tidak akan dipanggil pada objek
subclass kecuali subclass menggunakan super kata kunci.

Metode utama (cont.)


Utama tidak mengubah parameter. Ini hanya mengubah logika
dalam metode didefinisikan dalam superclass.

Java Tutorial pada Metode Melebihi


Kunjungi Oracle Java tutorial untuk informasi lebih lanjut tentang metode
utama:

http://docs oracle com/javase/tutorial/java/IandI/override html

Override ke String ()

Kita bisa menimpa ke String () untuk mengembalikan String yang


menyediakan informasi tentang objek bukan lokasi keberatan dalam
memori. Pertama, mulai dengan prototipe:
Tidak ada alasan untuk mengubah kembali jenis atau parameter,
jadi kita akan menimpa ke String ().
Mengingat data yang pribadi kita (nomor model, warna, tipe frame,
dan harga) kita dapat mengembalikan String berikut:

Override ke String () (cont.)


Hasil untuk metode kami ditimpa toString ():

Hal ini sangat umum dan sangat membantu saat membuat Java kelas
untuk mengganti metode untuk String () untuk menguji Anda metode dan
data.

Memahami Object Model

Polimorfisme, seperti warisan, adalah pusat model objek dan


pemrograman berorientasi objek.

Polimorfisme menyediakan fleksibilitas dalam bekerja dengan benda dan


referensi sambil menjaga obyek diskrit atau berbeda.

Di jantung filosofi, model objek berubah program menjadi koleksi benda


versus set tugas encapsulating data dan menciptakan lebih kecil,
encapsulating data dan menciptakan potongan yang lebih kecil dari
sebuah program, bukan sepotong besar kode.

Object Model Sasaran

Model objek memiliki beberapa tujuan:


abstraksi data

Melindungi informasi dan membatasi kemampuan kelas lain untuk


mengubah atau merusak data

pelaksanaan Menyembunyikan

Memberikan kode modular yang dapat digunakan kembali oleh program


atau kelas-kelas lain.

Polimorfisme dan Metode

Bagaimana metode dalam subclass dipengaruhi oleh polimorfisme?

Ingat subclass dapat mewarisi metode dari mereka, subclass dapat


mewarisi metode dari mereka superclasses.

Jika variabel sepeda dapat mengadakan subclass 'jenis objek,


bagaimana Java tahu mana metode untuk memohon ketika metode
ditimpa disebut?

Polimorfisme dan Metode (cont.)

Metode meminta referensi (sepeda) akan selalu mengacu metode dalam


(roadbike) Jenis objek

Bayangkan bahwa kelas sepeda kami berisi metode setColor (Warna


warna) untuk mengatur warna sepeda pengendara ingin. Roadbike
mewarisi metode ini. Apa yang terjadi ketika kita melakukan hal berikut?

Dinamis Metode Dispatch


Java mampu menentukan metode yang untuk memohon Berbasis pada
jenis objek yang dimaksud pada saat metode ini disebut.
Dinamis Metode Dispatch, juga dikenal sebagai dinamis Mengikat,
memungkinkan Java untuk benar dan secara otomatis tentukan metode
yang memanggil berdasarkan referensiJenis dan jenis objek.

Kelas abstrak

Apakah benar-benar perlu untuk mendefinisikan kelas sepeda jika kita


hanya akan membuat objek dari subclass: roadBikes dan mountainbikes?
Kelas abstrak adalah salah satu alternatif yang membahas masalah ini.

Kelas abstrak adalah salah satu yang tidak bisa dipakai:

Ini berarti bahwa Anda tidak dapat membuat objek dari jenis ini.

Hal ini dimungkinkan untuk membuat variabel, atau referensi dari ini
mengetik.

Kelas abstrak (cont.)


Jika kita mendeklarasikan kelas sepeda menjadi abstrak, kita masih bisa
menggunakan sintaks di bawah ini, tapi kita tidak bisa benar-benar
membuat objek sepeda.

Ini berarti semua referensi dari jenis sepeda akan referensi subclass objek
MountainBike atau roadbike.

Kelas abstrak (cont.)


kelas abstrak dapat berisi metode sepenuhnya dilaksanakan bahwa
mereka "lulus pada" untuk setiap kelas yang memanjang mereka.

Membuat kelas abstrak dengan menggunakan abstrak kata kunci.


Kelas abstrak (cont.)
Kelas abstrak juga dapat mendeklarasikan setidaknya satu abstrak
Metode (metode yang tidak mengandung pelaksanaan.

Ini berarti subclass harus menggunakan metode ini prototipe (outline)


dan harus menerapkan metode ini.

metode Abstrak dinyatakan dengan abstrak kata kunci.

Metode abstrak
metode abstrak:

Tidak memiliki metode tubuh.

Harus dideklarasikan di kelas abstrak.

Harus diganti dalam subclass.

Hal ini akan memaksa programmer untuk menerapkan dan


mendefinisikan metode. Biasanya, kelas abstrak berisi abstrak metode,
sebagian menerapkan metode, atau sepenuhnya metode
diimplementasikan.

Metode sebagian Diimplementasikan

Ingat bahwa subclass dapat memanggil superclass mereka konstruktor


dan metode menggunakan super kata kunci.

Dengan abstrak kelas subclass juga dapat menggunakan super untuk,


subclass juga dapat menggunakan super untuk menggunakan metode
superclass mereka. Biasanya hal ini dilakukan oleh pertama override
metode superclass ini, kemudian memanggil super, atau metode ditimpa,
dan kode kemudian menambahkan.

Sebagai contoh, mari kita menimpa equals () metode dari Sepeda kelas
abstrak yang dilaksanakan secara parsial, yang diimplementasikan secara
parsial berarti bahwa equals () metode dalam sepeda tidak abstrak.

Sebagian Diimplementasikan Metode (cont.)


Ini membandingkan dua objek sepeda didasarkan pada harga dan nomor
model. Catatan, metode ini menimpa equals () Metode dari Obyek karena
memiliki parameter yang sama dan kembali jenis.

Sebagian Diimplementasikan Metode (cont.)


Kita bisa mengganti metode dalam MountainBike subclass kami dan
memeriksa kesetaraan pada atribut lainnya.

Subclassing Kelas Abstrak


Ketika mewarisi dari kelas abstrak, yang harus Anda lakukan baik hal
berikut:

Deklarasikan kelas anak sebagai abstrak.

Override semua metode abstrak yang diwariskan dari orang tua kelas.
Kegagalan untuk melakukannya akan mengakibatkan kesalahan saat
kompilasi.
menggunakan Akhir
Meskipun bagus untuk memiliki pilihan, dalam beberapa kasus, Anda
mungkin tidak ingin beberapa metode untuk diganti atau memiliki kelas
Anda diperpanjang.

Java menyediakan alat untuk mencegah programmer override metode


atau menciptakan subclass: kata kunci terakhir.

Menggunakan Akhir (cont.)


Sebuah contoh yang baik adalah kelas String. Hal ini dinyatakan:

Programmer akan merujuk ke kelas seperti ini sebagai berubah, yang


berarti bahwa tidak ada yang dapat memperpanjang String dan
memodifikasi atau menimpa metodenya.

Menggunakan Akhir (cont.)


Pengubah akhir dapat diterapkan untuk variabel.

variabel akhir mungkin tidak mengubah nilai-nilai mereka setelah mereka

diinisialisasi.

Menggunakan Akhir (cont.)


variabel akhir dapat:

bidang Kelas

- Bidang Akhir dengan ekspresi konstan saat kompilasi adalah variabel


konstan.
- Static dapat dikombinasikan dengan akhir untuk menciptakan selalu
tersedia, tidak pernah berubah variabel.

Parameter Metode

Variabel lokal

Menggunakan Akhir (cont.)


referensi akhir harus selalu referensi objek yang sama.

Objek yang variabel adalah referensi tidak bisa berubah.

Isi objek yang dapat dimodifikasi.

Kunjungi Oracle tutorial Java untuk informasi lebih lanjut tentang


menggunakan

akhir: http://docs.oracle.com/javase/tutorial/java/IandI/final.html

Segitiga Applet Kode


Kode berikut menunjukkan langkah-langkah yang terlibat dalam menulis
applet dengan dua segitiga warna yang berbeda.

Segitiga Applet Kode Dijelaskan


Langkah 1: Perluas kelas Applet untuk mewarisi semua metode
termasuk cat.

Langkah 2: Menggantikan metode cat untuk menyertakan segitiga.


Langkah g g 3: Menggambar segitiga menggunakan fill Polygon yang
diwariskan metode.

Langkah 4: Gambarkan 2 segitiga menggunakan diwariskan mengisi


metode Polygon.

Langkah 5: Jalankan dan mengkompilasi kode Anda.

Segitiga Applet Gambar


Kode Segitiga Applet menampilkan gambar berikut:

Terminologi
istilah kunci yang digunakan dalam pelajaran ini termasuk:

abstrak

Dinamis Metode Dispatch

akhir

Berubah

metode Overloading

metode Melebihi

Polimorfisme

Ringkasan
Dalam pelajaran ini, Anda harus belajar bagaimana untuk:
Terapkan referensi superclass ke subclass benda

Tulis kode untuk menimpa metode

Gunakan metode dinamis dispatch untuk mendukung polimorfisme

Buat metode abstrak dan kelas

Mengenali metode override yang benar

Ringkasan (cont.)

Dalam pelajaran ini, Anda harus belajar bagaimana untuk:

Gunakan pengubah akhir

Jelaskan tujuan dan pentingnya kelas Object

Tulis kode untuk applet yang menampilkan dua segitiga dari

warna yang berbeda

Jelaskan referensi objek

Praktek
Latihan untuk pelajaran ini mencakup topik-topik berikut:

Tulis kode untuk applet yang menampilkan dua segitiga dari warna yang
berbeda

metode Override

Você também pode gostar