Menjadi bahasa pengaturcaraan berorientasikan objek, java menyokong ciri seperti pewarisan, polimorfisme, upcasting, dsb. Oleh itu, OOP dalam Java berkaitan dengan objek, kelas dan fungsi. Fungsi maya ialah salah satu fungsi ahli yang memudahkan polimorfisme masa larian di Jawa. Dalam artikel ini, kita akan membincangkan fungsi maya dalam Java.
Definisi: Fungsi maya bukanlah sebarang fungsi khas, tetapi ia adalah fungsi ahli yang memudahkan mekanisme mengatasi kaedah. Ini bermakna, dalam OOP, fungsi maya kelas induk ialah fungsi yang boleh ditindih oleh kelas anak yang mempunyai jenis yang sama tetapi dengan fungsi yang berbeza.
IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sintaks: Untuk Fungsi Maya dalam Java, anda harus mengikuti sintaks asas java dengan anotasi. Untuk melaksanakan mekanisme penggantian bagi fungsi maya, anotasi @Override boleh digunakan di sini untuk menunjukkan secara khusus fungsi maya yang ingin kami tolak, walaupun ia tidak wajib.
Sekarang mari kita lihat cara fungsi maya berfungsi. Apabila kita memanggil kaedah ganti kelas anak melalui rujukan jenis induknya, maka jenis atau rujukan objek menunjukkan kaedah yang akan digunakan. Kesimpulan keputusan ini berlaku semasa masa jalan selepas penyusunan. Jadi, kefungsian fungsi maya ditindih oleh kelas anak yang diwarisi daripada jenis yang sama.
Beberapa Perkara Berkenaan Fungsi Maya:
Kami akan membincangkan beberapa contoh kod Fungsi Maya di sini.
Dalam contoh ini, kami akan menunjukkan cara fungsi maya showMe() memaparkan teks yang berbeza bergantung pada rujukan objek yang dikaitkan dengannya. Apabila ia dikaitkan dengan jenis "Kepala", ia menunjukkan mesej daripada kelas induk. Apabila ia dikaitkan dengan jenis "Bawahan", ia menunjukkan mesej daripada kelas kanak-kanak.
Kod:
class Head { public void showMe() { System.out.println("I am Head"); } } class Subordinate extends Head { @Override public void showMe() { System.out.println("I am Subordinate "); } } public class VirtualFuntionDemo { public static void main(String args[]) { Head superObject = new Head(); superObject.showMe(); //method of super class or parent class is called Head subObject = new Subordinate(); // upcasting subObject.showMe();//method of sub class or child class is called by Parent reference, this is called "Virtual function" Subordinate subObject2 = new Subordinate(); subObject2.showMe(); //method of sub class or child class is called } }
Output:
Mari kita ambil contoh fungsi maya dalam kes pewarisan berbilang peringkat. Dalam contoh ini, kita mempunyai dua peringkat pewarisan diambil kira. Dalam contoh ini, kami akan menunjukkan cara pentadbiran fungsi maya() memaparkan mesej berbeza bergantung pada jenis objek yang dikaitkan dengannya. Apabila ia dikaitkan dengan jenis "Negeri", ia menunjukkan mesej daripada kelas induk. Apabila ia dikaitkan dengan jenis "Daerah", ia menunjukkan mesej daripada kelas anaknya. Sekali lagi dalam peringkat kedua warisan, apabila dikaitkan dengan jenis "Perbandaran", ia menunjukkan mesej daripada kelas anak induknya, kelas "Daerah".
Kod:
class State{ void administartion() { System.out.println("This is under state govt."); } } class District extends State{ void administartion(){ System.out.println("This is under District Magistrate"); } } class Municipality extends District{ void administartion(){ System.out.println("This is under Mayor "); } } public class VirtualFunctionDemo2 { public static void main(String args[]){ State superObject=new State (); State subObject=new District (); State sub2Object=new Municipality (); superObject. administartion (); subObject.administartion (); // run time polymorphism occurs in virtual function happening in first level of heritance sub2Object.administartion (); // run time polymorphism occurs in virtual function happening in 2nd level of heritance } }
Output:
Mari kita ambil satu lagi contoh polimorfisme masa larian dalam kes pewarisan berbilang peringkat. Dalam contoh ini, kita mempunyai tiga peringkat pewarisan diambil kira. Dalam contoh ini, kami akan menunjukkan cara fungsi maya whoami() memaparkan ciri yang berbeza bergantung pada jenis objek yang dikaitkan dengannya. Apabila ia dikaitkan dengan jenis "Kereta", ia menunjukkan mesej daripada kelas induk. Apabila ia dikaitkan dengan jenis "SUV", ia menunjukkan mesej daripada kelas anaknya. Sekali lagi dalam peringkat kedua warisan, apabila dikaitkan dengan jenis "MPV", ia menunjukkan mesej daripada kelas anak induknya, kelas "SUV". Sekali lagi dalam peringkat ketiga warisan, apabila dikaitkan dengan jenis "Hatchback", ia menunjukkan mesej daripada kelas anak induknya, kelas "MPV".
Kod:
class Cars{ void whoami() { System.out.println("This is Car"); } } class SUV extends Cars{ void whoami(){ System.out.println("This is SUV"); } } class MPV extends SUV{ void whoami(){ System.out.println("This is MPV"); } } class Hatchback extends MPV{ void whoami(){ System.out.println("This is hatchback"); } } public class VirtualFunctionDemo3 { public static void main(String args[]){ Cars superObject=new Cars(); Cars subObject=new SUV(); // object of child type : 1st level heritance Cars sub2Object=new MPV(); // object of child type : 2nd level heritance Cars sub3Object=new Hatchback(); // object of child type : 3rd level heritance superObject.whoami(); subObject.whoami(); //run time polymorphism occurs in virtual function happening in first level of heritance sub2Object.whoami(); //run time polymorphism occurs in virtual function happening in second level of heritance sub3Object.whoami(); //run time polymorphism occurs in virtual function happening in third level of heritance } }
Output:
Ini menyimpulkan pembelajaran kami tentang topik "Fungsi Maya di Jawa". Tulis sendiri kod yang disebutkan dalam contoh di atas dalam pengkompil java dan sahkan output. Pembelajaran kod akan menjadi tidak lengkap jika anda tidak akan menulis kod sendiri.
Atas ialah kandungan terperinci Fungsi Maya di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!