Apa itu polimorfisme, untuk apa itu, dan bagaimana ia digunakan?
oop
polymorphism
computer-science
UnkwnTech
sumber
sumber
Jawaban:
Jika Anda berpikir tentang akar kata Yunani, itu harus menjadi jelas.
Jadi polimorfisme adalah kemampuan (dalam pemrograman) untuk menyajikan antarmuka yang sama untuk berbagai bentuk mendasar (tipe data).
Misalnya, dalam banyak bahasa, bilangan bulat dan float secara implisit bersifat polimorfik karena Anda dapat menambah, mengurangi, mengalikan, dan sebagainya, terlepas dari fakta bahwa jenisnya berbeda. Mereka jarang dianggap sebagai objek dalam istilah yang biasa.
Tetapi, dengan cara yang sama, kelas menyukai
BigDecimal
atauRational
atauImaginary
juga dapat menyediakan operasi tersebut, meskipun mereka beroperasi pada tipe data yang berbeda.Contoh klasik adalah
Shape
kelas dan semua kelas yang dapat mewarisi darinya (persegi, lingkaran, dodecahedron, poligon tidak beraturan, percikan dan sebagainya).Dengan polimorfisme, masing-masing kelas ini akan memiliki data dasar yang berbeda. Bentuk titik hanya membutuhkan dua koordinat (dengan asumsi itu tentu saja dalam ruang dua dimensi). Lingkaran membutuhkan pusat dan jari-jari. Sebuah persegi atau persegi panjang membutuhkan dua koordinat untuk sudut kiri atas dan kanan bawah dan (mungkin) rotasi. Poligon tidak teratur membutuhkan serangkaian garis.
Dengan membuat kelas bertanggung jawab atas kode serta datanya, Anda dapat mencapai polimorfisme. Dalam contoh ini, setiap kelas akan memiliki fungsinya sendiri
Draw()
dan kode klien dapat melakukannya:untuk mendapatkan perilaku yang benar untuk bentuk apa pun.
Ini berbeda dengan cara lama dalam melakukan hal-hal di mana kode terpisah dari data, dan Anda akan memiliki fungsi seperti
drawSquare()
dandrawCircle()
.Orientasi objek, polimorfisme, dan pewarisan semuanya adalah konsep yang berkaitan erat dan sangat penting untuk diketahui. Ada banyak "peluru perak" selama karir panjang saya yang pada dasarnya hanya gagal tetapi paradigma OO ternyata bagus. Pelajari, pahami, menyukainya - Anda akan senang melakukannya :-)
(a) Saya awalnya menulis itu sebagai lelucon tetapi ternyata itu benar dan, karenanya, tidak lucu. Styrene monomer terbuat dari karbon dan hidrogen , dan polistirena dibuat dari kelompok-kelompok itu ,.
C8H8
(C8H8)n
Mungkin saya seharusnya menyatakan bahwa polip adalah banyak kemunculan surat itu
p
meskipun, sekarang saya harus menjelaskan leluconnya, bahkan itu juga tidak lucu.Terkadang, Anda harus berhenti saat Anda berada di belakang :-)
sumber
Poly = many and Morph = change or form
Polimorfisme adalah ketika Anda dapat memperlakukan objek sebagai versi generik dari sesuatu, tetapi ketika Anda mengaksesnya, kode menentukan jenis persisnya dan memanggil kode yang terkait.
Berikut adalah contoh dalam C #. Buat empat kelas dalam aplikasi konsol:
Sekarang buat yang berikut di Main () dari modul untuk aplikasi konsol:
Dalam contoh ini, kami membuat daftar Kendaraan kelas dasar, yang tidak tahu tentang berapa banyak roda yang dimiliki masing-masing sub-kelasnya, tetapi kami tahu bahwa setiap sub-kelas bertanggung jawab untuk mengetahui berapa banyak roda yang dimilikinya.
Kami kemudian menambahkan Sepeda, Mobil, dan Truk ke dalam daftar.
Selanjutnya, kita dapat mengulangi setiap Kendaraan dalam daftar, dan memperlakukan mereka semua secara identik, namun ketika kita mengakses setiap properti Roda 'Kendaraan, kelas Kendaraan mendelegasikan eksekusi kode tersebut ke sub-kelas yang relevan.
Kode ini dikatakan polimorfik, karena kode pasti yang dijalankan ditentukan oleh sub-kelas yang direferensikan saat runtime.
Saya harap ini membantu Anda.
sumber
Class_Excel
,Class_CSV
dipanggil, atauReader
dipanggil kelas. Either way, semacam iteratif jika / then / else harus disimpan di suatu tempat.Dari Memahami dan Menerapkan Polimorfisme dalam PHP , Terima kasih Steve Guidetti.
sumber
Jika ada yang mengatakan CUT kepada orang-orang ini
Apa yang akan terjadi?
Jadi representasi di atas menunjukkan Apa itu polimorfisme (nama yang sama, perilaku yang berbeda) dalam OOP.
Jika Anda pergi untuk wawancara dan pewawancara meminta Anda memberi tahu / menunjukkan contoh langsung untuk polimorfisme di ruangan yang sama dengan tempat kami duduk, katakan-
Jawaban - Pintu / Windows
Bingung Bagaimana?
Melalui Pintu / Jendela - seseorang bisa datang, udara bisa datang, cahaya bisa datang, hujan bisa datang, dll.
Untuk memahaminya dengan lebih baik dan secara sederhana saya menggunakan contoh di atas .. Jika Anda memerlukan referensi untuk kode ikuti jawaban di atas.
sumber
.foo()
metode, maka mereka harus berbagi antarmuka yang sama. Namun, ini tidak benar dan mengarah ke abstraksi yang salah. Antarmuka harus mendefinisikan peran yang harus dimainkan, yang mungkin memiliki banyak implementasi yang berbeda, tetapi semua menarik dari set input yang sama dan mengembalikan sesuatu dari set output yang sama. Input ke dalamx.cut(...)
untuk ahli bedah, stylist, atau aktor tidak sama, dan tidak pula hasilnya.Penjelasan sederhana dengan analogi
Presiden Amerika Serikat menggunakan polimorfisme. Bagaimana? Yah, dia punya banyak penasihat:
Setiap orang seharusnya hanya bertanggung jawab atas satu hal: Contoh
Presiden bukan ahli dalam pelapisan seng, atau fisika kuantum. Dia tidak tahu banyak hal - tetapi dia hanya tahu satu hal: bagaimana mengatur negara.
Agak sama dengan kode: masalah dan tanggung jawab harus dipisahkan ke kelas / orang yang relevan. Kalau tidak, Anda akan memiliki presiden yang mengetahui segala sesuatu di dunia secara harfiah - seluruh Wikipedia. Bayangkan memiliki seluruh wikipedia di kelas kode Anda: itu akan menjadi mimpi buruk untuk dipertahankan.
Mengapa itu adalah ide yang buruk bagi seorang presiden untuk mengetahui semua hal spesifik ini?
Jika presiden secara khusus memberi tahu orang apa yang harus dilakukan, itu berarti bahwa presiden perlu tahu persis apa yang harus dilakukan. Jika presiden perlu mengetahui hal-hal spesifik sendiri, itu berarti bahwa ketika Anda perlu melakukan perubahan, maka Anda harus membuatnya di dua tempat, bukan hanya satu.
Misalnya, jika EPA mengubah undang-undang polusi maka ketika itu terjadi: Anda harus membuat perubahan ke Kelas EPA dan juga kelas Presiden. Mengubah kode di dua tempat daripada satu bisa berbahaya - karena jauh lebih sulit untuk dipelihara.
Apakah ada pendekatan yang lebih baik?
Ada pendekatan yang lebih baik: presiden tidak perlu mengetahui secara spesifik apa pun - dia dapat meminta saran terbaik, dari orang-orang yang secara khusus ditugaskan untuk melakukan hal-hal itu.
Contoh - menggunakan pendekatan polimorfik:
Yang dilakukan presiden adalah meminta orang untuk menasihatinya - dan itulah yang sebenarnya dia lakukan dalam kehidupan nyata - dan itulah yang harus dilakukan oleh presiden yang baik. semua penasihatnya merespons secara berbeda, tetapi mereka semua tahu apa yang dimaksud presiden dengan: Advise (). Dia punya ratusan orang mengalir ke kantornya. Sebenarnya tidak masalah siapa mereka.Yang diketahui presiden hanyalah ketika dia meminta mereka untuk "memberi nasihat" mereka tahu bagaimana harus menanggapi :
Pendekatan ini memungkinkan presiden untuk menjalankan negara secara harfiah tanpa mengetahui apa pun tentang hal-hal militer, atau perawatan kesehatan atau diplomasi internasional: rinciannya diserahkan kepada para ahli. Satu-satunya hal yang perlu diketahui oleh presiden adalah ini: "Advise ()".
Apa yang TIDAK ANDA inginkan:
TIDAK! TIDAK! TIDAK! Dalam skenario di atas, presiden melakukan semua pekerjaan: dia tahu tentang peningkatan jumlah pasukan dan kondisi yang sudah ada sebelumnya. Ini berarti bahwa jika kebijakan timur tengah berubah, maka presiden harus mengubah perintahnya, serta kelas Petraeus juga. Kita hanya perlu mengubah kelas Petraeus, karena Presiden seharusnya tidak harus terjebak dalam detail seperti itu. Dia tidak perlu tahu tentang detailnya. Yang perlu dia ketahui adalah bahwa jika dia membuat satu pesanan, semuanya akan diurus. Semua detail harus diserahkan kepada para ahli.
Ini memungkinkan presiden untuk melakukan yang terbaik: menetapkan kebijakan umum, berpenampilan baik dan bermain golf: P.
Bagaimana sebenarnya diimplementasikan - melalui kelas dasar atau antarmuka umum
Yang berlaku adalah polimorfisme, singkatnya. Bagaimana tepatnya hal itu dilakukan? Melalui "mengimplementasikan antarmuka umum" atau dengan menggunakan kelas dasar (pewarisan) - lihat jawaban di atas yang merinci ini lebih jelas. (Untuk memahami konsep ini dengan lebih jelas, Anda perlu tahu apa antarmuka itu, dan Anda perlu memahami apa itu warisan. Tanpa itu, Anda mungkin kesulitan.)
Dengan kata lain, Petraeus, Condi dan HealthOfficials semua akan kelas yang "mengimplementasikan antarmuka" - panggilan mari itu yang
IAdvisor
antarmuka yang hanya berisi satu metode:Advise()
. Tapi sekarang kita masuk ke spesifik.Ini akan ideal
Ringkasan
Yang perlu Anda ketahui hanyalah ini:
Saya sangat berharap ini membantu Anda. Jika Anda tidak mengerti apa pun memposting komentar dan saya akan coba lagi.
sumber
if healthAdvisor? then do this:
danif petraus then do that etc.
pola ini perlu diulang dan itu tidak perlu dan rumit. lihat hasil edit di atas.Polimorfisme adalah kemampuan untuk memperlakukan kelas objek seolah-olah itu adalah kelas induknya.
Sebagai contoh, anggaplah ada kelas yang disebut Hewan, dan kelas yang disebut Anjing yang mewarisi dari Hewan. Polimorfisme adalah kemampuan untuk memperlakukan objek Anjing apa pun sebagai objek Hewan seperti:
sumber
classes have different functionality while sharing a common interface
Polimorfisme:
Ini adalah konsep pemrograman berorientasi objek. Kemampuan objek yang berbeda untuk merespons, masing-masing dengan caranya sendiri, untuk pesan yang identik disebut polimorfisme.
Polimorfisme dihasilkan dari fakta bahwa setiap kelas hidup dalam ruang namanya sendiri. Nama-nama yang diberikan dalam definisi kelas tidak bertentangan dengan nama-nama yang ditetapkan di luarnya. Ini benar, kedua variabel instan dalam struktur data objek dan metode objek:
Sama seperti bidang struktur C berada dalam namespace yang dilindungi, demikian juga variabel instance objek.
Nama metode juga dilindungi. Berbeda dengan nama fungsi C, nama metode bukan simbol global. Nama metode dalam satu kelas tidak dapat bertentangan dengan nama metode di kelas lain; dua kelas yang sangat berbeda dapat mengimplementasikan metode yang dinamai identik.
Nama metode adalah bagian dari antarmuka objek. Ketika sebuah pesan dikirim meminta suatu objek melakukan sesuatu, pesan itu menyebutkan metode yang harus dilakukan objek tersebut. Karena objek yang berbeda dapat memiliki metode dengan nama yang sama, makna pesan harus dipahami relatif terhadap objek tertentu yang menerima pesan. Pesan yang sama dikirim ke dua objek yang berbeda dapat memanggil dua metode berbeda.
Manfaat utama polimorfisme adalah menyederhanakan antarmuka pemrograman. Ini memungkinkan konvensi untuk didirikan yang dapat digunakan kembali di kelas setelah kelas. Alih-alih menciptakan nama baru untuk setiap fungsi baru yang Anda tambahkan ke program, nama yang sama dapat digunakan kembali. Antarmuka pemrograman dapat digambarkan sebagai seperangkat perilaku abstrak, terlepas dari kelas yang mengimplementasikannya.
Contoh:
Contoh-1: Berikut ini adalah contoh sederhana yang ditulis dalam Python 2.x .
Contoh-2: Polimorfisme diimplementasikan di Jawa menggunakan metode overloading dan metode overriding konsep.
Mari kita Pertimbangkan contoh Mobil untuk membahas polimorfisme. Ambil merek apa pun seperti Ford, Honda, Toyota, BMW, Benz dll. Semuanya bertipe Mobil.
Tetapi masing-masing memiliki fitur canggih dan teknologi canggih yang terlibat dalam perilaku perpindahan mereka.
Sekarang mari kita buat tipe dasar Mobil
Car.java
Mari kita terapkan contoh Ford Car.
Ford memperluas tipe Mobilnya untuk mewarisi semua anggotanya (properti dan metode).
Ford.java
Kelas Ford di atas memperluas kelas Car dan juga mengimplementasikan metode move (). Meskipun metode perpindahan sudah tersedia untuk Ford melalui Inheritance, Ford masih menerapkan metode dengan caranya sendiri. Ini disebut metode overriding.
Honda.java
Sama seperti Ford, Honda juga memperluas tipe Mobil dan menerapkan metode perpindahan dengan caranya sendiri.
Metode override adalah fitur penting untuk mengaktifkan Polimorfisme. Menggunakan Metode menimpa, Sub jenis dapat mengubah cara kerja metode yang tersedia melalui warisan.
PolymorphismExample.java
Keluaran Contoh Polimorfisme:
Dalam metode utama kelas PolymorphismExample, saya telah membuat tiga objek - Mobil, Ford dan Honda. Ketiga objek tersebut disebut oleh tipe Mobil.
Harap perhatikan poin penting di sini bahwa tipe super class dapat merujuk ke objek tipe Sub class tetapi sebaliknya tidak mungkin. Alasannya adalah bahwa semua anggota kelas super tersedia untuk subclass menggunakan warisan dan selama waktu kompilasi, kompiler mencoba untuk mengevaluasi apakah tipe referensi yang kami gunakan memiliki metode yang ia coba akses.
Jadi, untuk mobil referensi, f dan h dalam Contoh Polimorfisme, metode perpindahan ada dari tipe Mobil. Jadi, kompiler melewati proses kompilasi tanpa masalah.
Tetapi ketika datang ke eksekusi run time, mesin virtual memanggil metode pada objek yang merupakan sub tipe. Jadi, metode move () dipanggil dari implementasinya masing-masing.
Jadi, semua objek adalah tipe Mobil, tetapi selama waktu berjalan, eksekusi tergantung pada Obyek di mana doa terjadi. Ini disebut polimorfisme.
sumber
Biasanya ini merujuk kemampuan suatu objek tipe A untuk berperilaku seperti objek tipe B. Dalam pemrograman berorientasi objek ini biasanya dicapai dengan warisan. Beberapa tautan wikipedia untuk membaca lebih lanjut:
EDIT: memperbaiki tautan yang terputus.
sumber
classes have different functionality while sharing a common interface
Polimorfisme adalah ini:
Anda dapat melewati hanya Piala alih-alih contoh tertentu. Ini membantu secara umum karena Anda tidak harus memberikan contoh ukuran tertentu () per setiap jenis cangkir
sumber
Saya tahu ini adalah pertanyaan lama dengan banyak jawaban bagus tapi saya ingin memasukkan satu kalimat jawaban:
Ada banyak contoh di atas yang menunjukkan ini dalam tindakan, tetapi saya merasa ini adalah jawaban singkat yang bagus.
sumber
(Saya sedang menelusuri artikel lain tentang sesuatu yang sama sekali berbeda .. dan polimorfisme muncul ... Sekarang saya berpikir bahwa saya tahu apa itu Polimorfisme .... tetapi tampaknya tidak dengan cara yang indah ini dijelaskan .. Ingin menuliskannya di suatu tempat .. lebih baik masih akan membagikannya ...)
http://www.eioba.com/a/1htn/how-i-explained-rest-to-my-wife
baca terus dari bagian ini:
..... polimorfisme. Itu cara yang aneh mengatakan bahwa kata benda yang berbeda dapat memiliki kata kerja yang sama diterapkan pada mereka.
sumber
Secara umum, ini adalah kemampuan untuk antarmuka sejumlah jenis objek yang berbeda menggunakan API yang sama atau serupa secara dangkal. Ada berbagai bentuk:
Function overloading: mendefinisikan beberapa fungsi dengan nama yang sama dan tipe parameter yang berbeda, seperti sqrt (float), sqrt (double) dan sqrt (complex). Dalam sebagian besar bahasa yang memungkinkan ini, kompiler akan secara otomatis memilih yang benar untuk jenis argumen yang diteruskan ke dalamnya, sehingga ini adalah polimorfisme waktu kompilasi.
Metode virtual dalam OOP: metode kelas dapat memiliki berbagai implementasi yang disesuaikan dengan spesifikasi subkelasnya; masing-masing dikatakan menimpa implementasi yang diberikan dalam kelas dasar. Diberikan objek yang mungkin dari kelas dasar atau salah satu dari subkelasnya, implementasi yang benar dipilih dengan cepat, sehingga ini adalah polimorfisme run-time.
Template: fitur dari beberapa bahasa OO di mana fungsi, kelas, dll. Dapat diparameterisasi berdasarkan tipe. Misalnya, Anda dapat menentukan kelas templat "daftar" umum, dan kemudian instantiate sebagai "daftar bilangan bulat", "daftar string", bahkan mungkin "daftar daftar string" atau sejenisnya. Secara umum, Anda menulis kode sekali untuk struktur data dari jenis elemen sewenang-wenang, dan kompilator menghasilkan versi untuk berbagai jenis elemen.
sumber
Istilah polimorfisme berasal dari:
poli = banyak
morfisme = kemampuan untuk berubah
Dalam pemrograman, polimorfisme adalah "teknik" yang memungkinkan Anda "memandang" suatu objek sebagai lebih dari satu jenis benda. Contohnya:
Objek siswa juga merupakan objek orang. Jika Anda "melihat" (yaitu pemeran) pada siswa, Anda mungkin dapat meminta ID siswa. Anda tidak bisa selalu melakukan itu dengan seseorang, bukan? (seseorang belum tentu siswa, sehingga mungkin tidak memiliki ID siswa). Namun, seseorang mungkin memiliki nama. Seorang siswa juga.
Intinya, "melihat" objek yang sama dari "sudut" yang berbeda dapat memberi Anda "perspektif" yang berbeda (yaitu sifat atau metode yang berbeda)
Jadi teknik ini memungkinkan Anda membangun hal-hal yang dapat "dilihat" dari sudut yang berbeda.
Mengapa kita menggunakan polimorfisme? Sebagai permulaan ... abstraksi. Pada titik ini sudah cukup info :)
sumber
Mari kita gunakan analogi. Untuk naskah musik yang diberikan setiap musisi yang memainkannya memberikan sentuhannya sendiri dalam interpretasi.
Musisi dapat diabstraksi dengan antarmuka, genre yang dimiliki musisi dapat menjadi kelas abstrak yang mendefinisikan beberapa aturan interpretasi global dan setiap musisi yang bermain dapat dimodelkan dengan kelas konkret.
Jika Anda adalah pendengar karya musik, Anda memiliki referensi ke skrip misalnya Bach 'Fuga and Tocata' dan setiap musisi yang melakukannya melakukannya secara polimorfis dengan caranya sendiri.
Ini hanya contoh dari kemungkinan desain (di Jawa):
sumber
AnnHalloway
danVictorBorga
merasa seperti itu harus menjadi objek daripada kelas - contoh Anda akan lebih baik dibaca dengan misalnya.public class Pianist implements Musician
danvictorBorge = new Pianist();
lainSaya telah memberikan ikhtisar polimorfisme tingkat tinggi untuk pertanyaan lain:
Polimorfisme dalam c ++
Semoga ini bisa membantu. Ekstrak ...
(lanjutan di Polimorfisme dalam c ++ )
sumber
Polimorfisme adalah kemampuan objek yang dapat diambil dalam berbagai bentuk. Misalnya di kelas manusia, seorang pria dapat bertindak dalam berbagai bentuk ketika kita berbicara tentang hubungan. EX: Seorang lelaki adalah ayah bagi putranya dan ia adalah suami bagi istrinya dan ia adalah guru bagi murid-muridnya.
sumber
Polimorfisme adalah kemampuan suatu benda untuk mengambil banyak bentuk. Penggunaan polimorfisme yang paling umum dalam OOP terjadi ketika referensi kelas induk digunakan untuk merujuk ke objek kelas anak. Dalam contoh ini yang ditulis di Jawa, kami memiliki tiga jenis kendaraan. Kami membuat tiga objek berbeda dan mencoba menjalankan metode roda mereka:
Hasilnya adalah:
Untuk informasi lebih lanjut silakan kunjungi https://github.com/m-vahidalizadeh/java_advanced/blob/master/src/files/PolymorphismExample.java . Saya harap ini membantu.
sumber
Polimorfisme adalah kemampuan programmer untuk menulis metode dengan nama yang sama yang melakukan hal berbeda untuk berbagai jenis objek, tergantung pada kebutuhan objek tersebut. Sebagai contoh, jika Anda mengembangkan kelas yang dipanggil
Fraction
dan kelas yang dipanggilComplexNumber
, keduanya mungkin termasuk metode yang disebutdisplay()
, tetapi masing-masing dari mereka akan menerapkan metode itu secara berbeda. Dalam PHP, misalnya, Anda dapat menerapkannya seperti ini:Output:
Beberapa jawaban lain tampaknya menyiratkan bahwa polimorfisme hanya digunakan dalam hubungannya dengan warisan; misalnya, mungkin
Fraction
danComplexNumber
keduanya mengimplementasikan kelas abstrak yang disebutNumber
yang memiliki metodedisplay()
, yang mana Fraction dan ComplexNumber keduanya wajib untuk mengimplementasikan. Tetapi Anda tidak perlu warisan untuk mengambil keuntungan dari polimorfisme.Setidaknya dalam bahasa yang diketik secara dinamis seperti PHP (saya tidak tahu tentang C ++ atau Java), polimorfisme memungkinkan pengembang untuk memanggil metode tanpa harus mengetahui jenis objek sebelumnya, dan percaya bahwa implementasi metode yang benar akan disebut. Sebagai contoh, katakanlah pengguna memilih jenis yang
Number
dibuat:Dalam hal ini,
display()
metode yang sesuai akan dipanggil, meskipun pengembang tidak dapat mengetahui sebelumnya apakah pengguna akan memilih fraksi atau bilangan kompleks.sumber
Dalam pemrograman berorientasi objek, polimorfisme mengacu pada kemampuan bahasa pemrograman untuk memproses objek secara berbeda tergantung pada tipe data atau kelas mereka . Lebih khusus lagi, ini adalah kemampuan untuk mendefinisikan kembali metode untuk kelas turunan.
sumber
Polimorfisme secara harfiah berarti, berbagai bentuk. (atau banyak bentuk): Objek dari kelas yang berbeda dan metode nama yang sama, tetapi alur kerja berbeda. Contoh sederhana adalah:
Pertimbangkan seseorang X.
Dia hanya satu orang tetapi dia bertindak banyak. Anda mungkin bertanya bagaimana:
Dia adalah putra bagi ibunya. Seorang teman bagi teman-temannya. Seorang saudara lelaki dari saudara perempuannya.
sumber
Polimorfisme dalam OOP berarti suatu kelas dapat memiliki tipe yang berbeda, pewarisan adalah salah satu cara menerapkan polimorfisme.
misalnya, Shape adalah antarmuka, memiliki subtipe Square , Circle , Diamond . sekarang Anda memiliki objek Square, Anda dapat meng-upcasting Square to Shape secara otomatis, karena Square adalah Shape. Tetapi ketika Anda mencoba untuk menurunkan Shape ke Square, Anda harus melakukan casting tipe eksplisit, karena Anda tidak bisa mengatakan Shape is Square, itu bisa juga Circle. jadi Anda perlu secara manual melemparkannya dengan kode seperti
Square s = (Square)shape
, bagaimana jika bentuknya Circle, Anda akan dapatkanjava.lang.ClassCastException
, karena Circle bukan Square.sumber
Polimorfisme:
Variabel referensi tipe antarmuka dapat merujuk ke salah satu instance kelas yang mengimplementasikan antarmuka itu.
sumber
Polimorfisme adalah kemampuan untuk menggunakan objek dalam kelas yang diberikan, di mana semua komponen yang membentuk objek diwarisi oleh subkelas dari kelas yang diberikan. Ini berarti bahwa sekali objek ini dideklarasikan oleh kelas, semua subclass di bawahnya (dan subclass mereka, dan seterusnya sampai Anda mencapai subclass terjauh / terendah) mewarisi objek dan komponennya (makeup).
Ingatlah bahwa setiap kelas harus disimpan dalam file yang terpisah.
Kode berikut mencontohkan Polimorfisme:
SuperClass:
Sang ayah, subkelas:
Anak itu, subclass lain:
Metode eksekusi, referensi kelas Induk untuk memulai:
Perhatikan bahwa setiap kelas harus dideklarasikan dalam file * .java yang terpisah. Kode harus dikompilasi. Juga perhatikan bahwa Anda dapat terus menggunakan maidenName dan familyTree lebih jauh ke bawah. Itulah konsep polimorfisme. Konsep pewarisan juga dieksplorasi di sini, di mana satu kelas dapat digunakan atau didefinisikan lebih lanjut oleh subkelas.
Semoga ini bisa membantu dan membuatnya jelas. Saya akan memposting hasil ketika saya menemukan komputer yang dapat saya gunakan untuk memverifikasi kode. Terima kasih atas kesabarannya!
sumber
Polimorfisme memungkinkan rutin yang sama (fungsi, metode) untuk bertindak pada tipe yang berbeda.
Karena banyak jawaban yang ada menggabungkan subtyping dengan polimorfisme, berikut adalah tiga cara (termasuk subtyping) untuk mengimplementasikan polimorfisme.
Lihat juga:
http://wiki.c2.com/?CategoryPolymorphism
https://en.wikipedia.org/wiki/Polymorphism_(computer_science)
sumber
Dalam bahasa Berorientasi Objek, polimorfisme memungkinkan perawatan dan penanganan berbagai tipe data melalui antarmuka yang sama. Sebagai contoh, pertimbangkan pewarisan dalam C ++: Kelas B berasal dari Kelas A. Sebuah penunjuk tipe A * (penunjuk ke kelas A) dapat digunakan untuk menangani kedua objek dari kelas A DAN objek dari kelas B.
sumber
Polimorfisme dalam istilah pengkodean adalah ketika objek Anda dapat eksis sebagai beberapa tipe melalui pewarisan, dll. Jika Anda membuat kelas bernama "Shape" yang mendefinisikan jumlah sisi yang dimiliki objek Anda, maka Anda dapat membuat kelas baru yang mewarisinya seperti "Square" ". Ketika Anda kemudian membuat contoh dari "Kotak" Anda kemudian dapat melemparkannya kembali dan maju dari "Bentuk" ke "Kotak" seperti yang diperlukan.
sumber
Polimorfisme memberi Anda kemampuan untuk membuat satu modul memanggil modul lain, namun memiliki titik ketergantungan waktu kompilasi terhadap aliran kontrol alih-alih dengan aliran kontrol.
Dengan menggunakan polimorfisme, modul tingkat tinggi tidak tergantung pada modul tingkat rendah. Keduanya bergantung pada abstraksi. Ini membantu kami menerapkan prinsip inversi ketergantungan ( https://en.wikipedia.org/wiki/Dependency_inversion_principle ).
Di sinilah saya menemukan definisi di atas. Sekitar 50 menit dalam video, instruktur menjelaskan hal di atas. https://www.youtube.com/watch?v=TMuno5RZNeE
sumber
Apa itu polimorfisme?
Polimorfisme adalah kemampuan untuk:
Meminta operasi pada contoh dari jenis khusus dengan hanya mengetahui jenis umum sementara memanggil metode jenis khusus dan bukan dari jenis umum: itu adalah polimorfisme dinamis .
Tetapkan beberapa metode yang memiliki nama save tetapi memiliki parameter differents: itu adalah polimorfisme statis .
Yang pertama kalau definisi sejarah dan yang paling penting.
Untuk apa polimorfisme digunakan?
Hal ini memungkinkan untuk membuat konsistensi yang sangat diketik dari hirarki kelas dan untuk melakukan beberapa hal ajaib seperti mengelola daftar objek dari tipe yang berbeda tanpa mengetahui tipenya tetapi hanya satu dari tipe induknya, serta binding data.
Mengetik kuat dan lemah
Sampel
Berikut adalah beberapa Bentuk seperti Titik, Garis, Persegi Panjang dan Lingkaran yang memiliki operasi Draw () tidak mengambil apa-apa atau parameter untuk mengatur batas waktu untuk menghapusnya.
Di sini kelas Shape dan Shape.Draw () metode harus ditandai sebagai abstrak.
Mereka bukan untuk membuat mengerti.
Penjelasan
Tanpa polimorfisme, menggunakan abstrak-virtual-menimpa, sambil menguraikan bentuk, itu hanya metode Spahe.Draw () yang disebut sebagai CLR tidak tahu metode apa yang harus dipanggil. Jadi itu memanggil metode dari jenis yang kita gunakan, dan di sini jenisnya adalah Shape karena daftar deklarasi. Jadi kodenya tidak melakukan apa-apa sama sekali.
Dengan polimorfisme, CLR mampu menyimpulkan jenis objek yang sebenarnya yang kita gunakan menggunakan apa yang disebut tabel virtual. Jadi itu disebut yang baik metode yang , dan di sini memanggil Shape.Draw () jika Shape is Point memanggil Point.Draw (). Jadi kodenya menggambar bentuk.
Lebih banyak bacaan
C # - Polimorfisme (Level 1)
Polimorfisme di Jawa (Level 2)
Polimorfisme (Panduan Pemrograman C #)
Tabel metode virtual
sumber