Java Berorientasi Objek: Di sini kami mengatur pengetahuan dasar yang berorientasi pada objek untuk membantu semua orang belajar dan memahami. Saya berharap ini dapat membantu semua orang. Berikut adalah pengetahuan yang relevan yang disusun berdasarkan informasi wawancara perusahaan:
Perbedaan antara kelebihan beban dan override. Dapatkah metode yang kelebihan beban mengubah jenis nilai pengembalian?
Kelebihan berarti kelebihan beban, dan override berarti ditimpa, yaitu menulis ulang. Kelebihan beban yang berlebihan berarti ada beberapa metode dengan nama yang sama di kelas yang sama, tetapi daftar parameter metode ini berbeda (mis., Jumlah atau jenis parameter berbeda).
Penulisan ulang override berarti bahwa metode dalam subkelas dapat persis sama dengan nama dan parameter metode di kelas induk. Ketika metode ini dipanggil melalui objek instan yang dibuat oleh subkelas, metode definisi dalam subkelas akan dipanggil, yang setara dengan menimpa metode yang persis sama yang ditentukan dalam kelas induk. Ini juga merupakan manifestasi dari polimorfisme pemrograman yang berorientasi objek.
Override dapat diterjemahkan sebagai override. Seperti yang dapat Anda ketahui secara harfiah, itu mengesampingkan metode dan menulis ulang untuk mencapai fungsi yang berbeda. Pengesampingan yang paling akrab bagi kami adalah implementasi metode antarmuka. Dalam antarmuka, metode ini umumnya dinyatakan, dan ketika kita mengimplementasikannya, kita perlu menerapkan semua metode deklarasi antarmuka. Selain penggunaan khas ini, kami juga dapat mengganti metode dalam kelas induk dalam warisan. Poin -poin berikut harus diperhatikan selama pertanggungan:
1. Logo metode overlay harus persis dicocokkan dengan logo metode overlay untuk mencapai efek overlay;
2. Nilai pengembalian metode yang ditimpa harus konsisten dengan pengembalian metode yang ditimpa;
3. Pengecualian yang dilemparkan oleh metode yang ditimpa harus konsisten dengan pengecualian yang dilemparkan oleh metode yang ditimpa, atau itu adalah subkelas;
4. Metode yang ditimpa tidak dapat bersifat pribadi, jika tidak, hanya metode baru yang didefinisikan dalam subkelasnya dan tidak ditimpa.
Kelebihan muatan dapat diterjemahkan sebagai kelebihan beban, yang berarti mendefinisikan beberapa metode dengan nama yang sama, membedakan metode ini dengan mendefinisikan parameter input yang berbeda, dan kemudian ketika dipanggil, VM akan memilih metode yang sesuai untuk dieksekusi sesuai dengan gaya parameter yang berbeda. Saat menggunakan kelebihan beban, harap perhatikan poin -poin berikut:
1. Saat menggunakan kelebihan beban, Anda hanya dapat melewati gaya parameter yang berbeda. Misalnya, jenis parameter yang berbeda, jumlah parameter yang berbeda, dan pesanan parameter yang berbeda (tentu saja, beberapa jenis parameter dalam metode yang sama harus berbeda, misalnya, itu bisa menyenangkan (int, float), tetapi tidak bisa menyenangkan (int, int));
2. tidak dapat kelebihan beban melalui izin akses, jenis pengembalian, dan pengecualian yang dilemparkan;
3. Jenis pengecualian dan jumlah metode tidak akan mempengaruhi kelebihan beban;
4. Untuk warisan, jika suatu metode memiliki hak akses di kelas induk dan priavte, maka itu tidak dapat kelebihan beban di subkelas. Jika didefinisikan, itu hanya mendefinisikan metode baru dan tidak akan mencapai efek kelebihan beban.
Jika daftar parameter beberapa metode kelebihan beban berbeda, tipe pengembaliannya mungkin berbeda. Jika daftar parameter dari kedua metode tersebut persis sama, kelebihan beban yang berlebihan tidak dapat dicapai dengan nilai pengembalian yang berbeda. Kita dapat menggunakan metode bukti terbalik untuk menggambarkan masalah ini. Misalnya, ketika kita memanggil metode MAP.Remove (kunci), meskipun metode Hapus memiliki nilai pengembalian, kita biasanya tidak menentukan variabel yang menerima hasil pengembalian. Pada saat ini, dengan asumsi bahwa ada dua metode di kelas ini dengan nama dan daftar parameter yang persis sama, hanya karena jenis pengembalian berbeda, Java tidak dapat menentukan metode mana yang ingin dihubungi oleh programmer, karena tidak dapat dinilai dengan mengembalikan jenis hasil.
Bisakah konstruktor ditimpa?
Konstruktor konstruktor tidak dapat diwariskan, sehingga override tidak dapat diganti, tetapi kelebihan beban dapat kelebihan beban.
Bisakah antarmuka diwarisi? Bisakah kelas abstrak mengimplementasikan antarmuka? Bisakah kelas abstrak mewarisi kelas konkret? Bisakah kelas abstrak ada? Bisakah kelas abstrak memiliki metode utama statis di kelas abstrak?
Antarmuka dapat mewarisi antarmuka. Kelas abstrak dapat menerapkan (implement) antarmuka. Mungkin ada metode utama statis di kelas abstrak.
Satu -satunya perbedaan antara kelas abstrak dan kelas biasa adalah bahwa mereka tidak dapat membuat objek instan dan memungkinkan metode abstrak.
Saat menulis metode clone (), biasanya ada baris kode. Apa itu?
Metode klon () adalah untuk mengkloning, yang berarti menyalin objek; Artinya, sudah ada objek A, di mana A berisi beberapa nilai yang valid, tetapi jika Anda ingin memiliki objek B, dan setiap perubahan pada B tidak akan mempengaruhi nilai dalam A, tetapi B bukan objek baru yang baru.
Salin: ① Objek Salin Mengembalikan objek baru, bukan referensi. ② Perbedaan antara menyalin objek dan objek yang dikembalikan dengan operator baru adalah bahwa salinan sudah berisi informasi objek asli, daripada informasi awal objek.
Clone memiliki perilaku default, super.clone (); Karena pertama, anggota di kelas induk harus disalin ke tempatnya, dan kemudian anggota disalin.
Apa aspek fitur yang berorientasi objek
Bahasa pemrograman yang berorientasi objek meliputi empat fitur utama: enkapsulasi, warisan, abstraksi, dan polimorfisme.
1 paket:
Pengemasan adalah dasar untuk memastikan bahwa komponen perangkat lunak memiliki modularitas yang sangat baik. Tujuan pengemasan adalah untuk mencapai "kohesi tinggi dan kopling rendah" komponen perangkat lunak untuk mencegah perubahan yang disebabkan oleh saling ketergantungan program. Dalam bahasa pemrograman yang berorientasi objek, objek adalah unit enkapsulasi yang paling mendasar, dan enkapsulasi yang berorientasi objek lebih jelas dan lebih kuat daripada enkapsulasi bahasa tradisional. Enkapsulasi yang berorientasi pada objek adalah merangkum kode yang menggambarkan sifat dan perilaku suatu objek dalam "modul", yaitu di kelas. Properti didefinisikan oleh variabel dan perilaku ditentukan oleh metode. Metode ini dapat secara langsung mengakses properti di objek yang sama. Secara umum, ingatlah untuk meletakkan variabel dan metode mengakses variabel ini bersama -sama, mendefinisikan semua variabel anggota dalam kelas sebagai pribadi, dan hanya metode kelas sendiri yang dapat mengakses variabel anggota ini, yang pada dasarnya mengimplementasikan enkapsulasi objek. Pegang prinsip: Letakkan metode dan metode terkait yang beroperasi pada hal yang sama di kelas yang sama, dan letakkan metode dan data yang beroperasi pada kelas yang sama.
2. Abstrak:
Abstraksi adalah untuk mengetahui kesamaan dan kesamaan dari beberapa hal, dan kemudian mengklasifikasikannya ke dalam kelas yang hanya mempertimbangkan kesamaan dan kesamaan dari hal -hal ini, dan mengabaikan aspek -aspek yang tidak terkait dengan topik dan tujuan saat ini, dan fokus pada aspek -aspek yang terkait dengan tujuan saat ini. Misalnya, melihat semut dan gajah dan Anda bisa membayangkan seperti apa mereka, yaitu abstraksi. Abstraksi mencakup dua aspek: abstraksi perilaku dan abstraksi keadaan. Misalnya, tentukan kelas seseorang sebagai berikut:
class person {string name; usia int; } Manusia pada awalnya adalah hal yang sangat kompleks dan memiliki banyak aspek, tetapi karena sistem saat ini hanya perlu memahami nama dan usia seseorang, kelas yang didefinisikan di atas hanya berisi atribut nama dan usia. Ini adalah abstraksi. Menggunakan abstraksi dapat menghindari mempertimbangkan beberapa detail yang tidak terkait dengan tujuan.
3. Warisan:
Saat mendefinisikan dan mengimplementasikan kelas, itu dapat dilakukan berdasarkan kelas yang ada, dan konten yang ditentukan oleh kelas yang ada diambil sebagai kontennya sendiri, dan beberapa konten baru dapat ditambahkan, atau metode asli dapat dimodifikasi untuk membuatnya lebih cocok untuk kebutuhan khusus. Ini adalah warisan. Warisan adalah mekanisme di mana subclass secara otomatis berbagi data dan metode kelas induk. Ini adalah hubungan antar kelas, yang meningkatkan penggunaan kembali dan skalabilitas perangkat lunak.
4 Polimorfisme:
Polimorfisme mengacu pada tipe spesifik yang ditunjukkan oleh variabel referensi yang ditentukan dalam program dan metode panggilan yang dikeluarkan melalui variabel referensi tidak ditentukan selama pemrograman, tetapi ditentukan selama menjalankan program, yaitu, instance kelas mana variabel referensi yang akan ditentukan selama program tersebut. Karena kelas spesifik ditentukan hanya ketika program berjalan, variabel referensi dapat terikat pada berbagai implementasi kelas yang berbeda tanpa memodifikasi kode program sumber, yang mengarah ke metode spesifik dari panggilan referensi yang berubah sesuai. Artinya, kode spesifik yang terikat pada program berjalan tanpa memodifikasi kode program, sehingga program dapat memilih beberapa status berjalan, yang merupakan polimorfisme. Polimorfisme meningkatkan fleksibilitas dan skalabilitas perangkat lunak. Misalnya, userdao dalam kode berikut adalah antarmuka yang mendefinisikan objek instan yang ditunjukkan oleh variabel referensi userdao dan dikembalikan oleh daofactory.getdao () saat dieksekusi. Kadang -kadang menunjuk pada implementasi userjdbcdao, dan kadang -kadang menunjuk pada implementasi userhibernedao. Dengan cara ini, Anda dapat mengubah implementasi kelas spesifik yang ditunjukkan oleh userdao tanpa memodifikasi kode sumber, menghasilkan kode spesifik dari metode userdao.insertuser () juga berubah sesuai. Artinya, kadang -kadang disebut metode insertUser USERJDBCDAO, dan kadang -kadang disebut metode insertUser UserhibernedAo:
Userdao userdao = daofactory.getdao (); userdao.insertuser (pengguna);
Apa mekanisme untuk menerapkan polimorfisme di Java?
Variabel referensi yang ditentukan oleh kelas induk atau antarmuka dapat menunjuk ke objek instance dari kelas implementasi subkelas atau konkret, dan metode yang dipanggil oleh program terikat secara dinamis selama runtime. Ini adalah metode yang mengacu pada objek instance spesifik yang ditunjukkan oleh variabel, yaitu, metode objek yang berjalan dalam memori, daripada metode yang ditentukan dalam jenis variabel referensi.
Apa perbedaan antara kelas abstrak dan antarmuka?
Kelas yang berisi pengubah abstrak adalah kelas abstrak, objek instan yang tidak dapat dibuat oleh kelas abstrak. Kelas yang mengandung metode abstrak harus didefinisikan sebagai kelas abstrak, dan metode dalam kelas kelas abstrak tidak harus abstrak. Definisi metode abstrak dalam kelas kelas abstrak harus diimplementasikan dalam subkelas konkret, sehingga tidak ada konstruktor abstrak atau metode statis abstrak. Jika subkelas tidak menerapkan semua metode abstrak di kelas induk abstrak, subkelas juga harus didefinisikan sebagai tipe abstrak.
Antarmuka dapat dikatakan sebagai kasus khusus dari kelas abstrak, dan semua metode dalam antarmuka harus abstrak. Definisi metode dalam default antarmuka ke tipe abstrak publik, dan jenis variabel anggota di antarmuka default ke final statis publik.
Perbedaan tata bahasa antara keduanya:
1. Kelas abstrak dapat memiliki metode konstruksi, tetapi tidak dalam antarmuka.
2. Mungkin ada variabel anggota biasa di kelas abstrak, tetapi tidak ada variabel anggota biasa di antarmuka.
3. Kelas abstrak dapat berisi metode biasa yang tidak beragam. Semua metode dalam antarmuka harus abstrak dan tidak mungkin ada metode biasa yang tidak beragam.
4. Jenis akses metode abstrak dalam kelas abstrak dapat bersifat publik, dilindungi dan (tipe default, meskipun tidak ada kesalahan dalam gerhana, itu tidak boleh berfungsi), tetapi metode abstrak dalam antarmuka hanya bisa dari tipe publik, dan standarnya adalah tipe abstrak publik.
5. Kelas abstrak dapat berisi metode statis, tetapi antarmuka tidak dapat berisi metode statis.
6. Kelas abstrak dan antarmuka dapat berisi variabel anggota statis. Jenis akses variabel anggota statis dalam kelas abstrak dapat sewenang -wenang, tetapi variabel yang didefinisikan dalam antarmuka hanya dapat berupa tipe akhir statis publik, dan standarnya adalah tipe final statis publik.
7. Kelas dapat menerapkan beberapa antarmuka, tetapi hanya dapat mewarisi satu kelas abstrak.
Perbedaan antara keduanya dalam aplikasi:
Antarmuka berperan dalam metode desain arsitektur sistem, terutama digunakan untuk mendefinisikan kontrak komunikasi antar modul. Kelas abstrak berperan dalam implementasi kode dan dapat mewujudkan penggunaan kembali kode. Misalnya, pola desain metode templat adalah aplikasi khas kelas abstrak. Dengan asumsi bahwa semua kelas servlet dalam proyek tertentu harus menggunakan metode yang sama untuk membuat penilaian izin, merekam log akses dan menangani pengecualian, maka Anda dapat mendefinisikan kelas dasar abstrak, sehingga semua servlet dapat mewarisi kelas dasar abstrak ini, penilaian izin lengkap, catatan akses akses dan menangani pengecualian dalam metode layanan dari kelas dasar abstrak, dan hanya melengkapi kode logika masing -masing dalam setiap kode logika dalam masing -masing. Kode pseudo adalah sebagai berikut:
public abstract class BaseServlet extends HttpServlet{ public final void service(HttpServletRequest request, HttpServletResponse response) throws IOExcetion,ServletException { Record access log for permission judgment if (with permission){ try{ doService(request,response);} catch(Excetpion e) { Record exception information}} } protected abstract void Doservice (permintaan httpservletRequest, respons httpservletResponse) melempar ioExcetion, servletException; // Perhatikan bahwa izin akses didefinisikan sebagai dilindungi, yang tampaknya profesional dan ketat, karena} kelas publik myServlet1 memperluas basa {void doservice yang dilindungi (httpservletrequest permintaan, httpserVletResponse response yang ada di servlexcetion {servletexception {httpserVleSponse) yang ada di Layanan Layanan, servletexception {httpserVleSponse)Sepotong kode tertentu di tengah metode kelas induk tidak pasti, jadi saya menyerahkannya ke subkelas, jadi saya menggunakan metode template untuk merancang pola.
Bisakah metode abstrak statis pada saat yang sama, dapatkah itu asli pada saat yang sama, dan dapatkah itu disinkronkan secara bersamaan?
Metode abstrak tidak dapat statis, karena metode abstrak harus diimplementasikan oleh subkelas, dan statis tidak ada hubungannya dengan subkelas!
Metode asli berarti bahwa metode ini perlu diimplementasikan dalam bahasa pemrograman yang bergantung pada platform lain, dan tidak ada masalah implementasi subkelas, sehingga tidak dapat abstrak dan tidak dapat dicampur dengan abstrak. Misalnya, kelas FileOutPutSteam perlu ditangani dengan perangkat keras, dan implementasi yang mendasarinya menggunakan implementasi API terkait sistem operasi. Misalnya, itu diimplementasikan dalam bahasa C di Windows. Oleh karena itu, melihat kode sumber JDK, Anda dapat menemukan bahwa definisi metode terbuka FileOutputStream adalah sebagai berikut: Private Void Void Open (String Name) melempar FileNotFoundException;
Jika kita ingin menggunakan Java untuk memanggil fungsi bahasa C yang ditulis oleh orang lain, kita tidak dapat menyebutnya secara langsung. Kita perlu menulis fungsi bahasa C sesuai dengan persyaratan Java, dan fungsi bahasa C kita akan memanggil fungsi bahasa C orang lain. Karena fungsi bahasa C kami ditulis sesuai dengan persyaratan Java, fungsi bahasa C kami dapat dihubungkan ke Java. Metode docking pada Java adalah untuk menentukan metode yang sesuai dengan fungsi C kami. Metode yang sesuai di Java tidak perlu menulis kode tertentu, tetapi penduduk asli perlu dinyatakan sebelumnya.
Untuk disinkronkan, objek kunci sinkronisasi yang digunakan oleh sinkronisasi sinkronisasi pada metode ini adalah ini, dan metode abstrak tidak dapat menentukan apa ini.
Apa itu kelas internal? Kelas bersarang statis berbeda dari kelas dalam.
Kelas internal adalah kelas yang ditentukan di dalam kelas. Anggota statis tidak dapat didefinisikan dalam kelas internal. Anggota statis bukan karakteristik suatu objek. Mereka hanya perlu menemukan tempat tinggal, sehingga mereka perlu ditempatkan di kelas. Kelas internal dapat secara langsung mengakses variabel anggota di kelas eksternal. Kelas internal dapat didefinisikan di luar metode kelas eksternal atau dalam badan metode kelas eksternal, seperti yang ditunjukkan di bawah ini:
kelas publik luar {int out_x = 0; Metode public void () {inner1 inner1 = new Inner1 (); kelas publik dalam2 // kelas dalam yang didefinisikan di dalam Badan Metode {Metode publik () {out_x = 3; }} Inner2 inner2 = new Inner2 (); } kelas publik Inner1 // kelas dalam yang didefinisikan di luar badan metode {}} Jenis akses dari kelas dalam yang ditentukan di luar Badan Metode dapat bersifat publik, terlindungi, dan default. Ini seperti variabel anggota yang ditentukan dalam kelas memiliki 4 jenis akses, yang menentukan apakah definisi kelas dalam terlihat oleh kelas lain. Dalam hal ini, kita juga dapat membuat objek instance dari kelas dalam di luar. Saat membuat objek instance dari kelas dalam, kita harus terlebih dahulu membuat objek instance dari kelas luar, dan kemudian menggunakan objek instance dari kelas luar untuk membuat objek instance dari kelas dalam. Kodenya adalah sebagai berikut:
Luar luar = luar baru ();
Outer.inner1 inner1 = outer.new innner1 ();
Tidak ada pengubah jenis akses sebelum kelas dalam yang ditentukan di dalam metode ini, seperti variabel lokal yang ditentukan dalam metode ini, tetapi pengubah akhir atau abstrak dapat digunakan sebelum kelas dalam. Kelas dalam ini tidak terlihat oleh kelas lain dan tidak dapat merujuk ke kelas dalam ini, tetapi objek instance yang dibuat oleh kelas dalam ini dapat diteruskan ke kelas lain untuk diakses. Kelas internal semacam ini harus didefinisikan terlebih dahulu dan kemudian digunakan, yaitu kode definisi kelas internal harus muncul sebelum menggunakan kelas, yang sama dengan prinsip bahwa variabel lokal dalam metode tersebut harus didefinisikan terlebih dahulu dan kemudian digunakan. Kelas dalam ini dapat mengakses variabel lokal di badan metode, tetapi pengubah akhir harus ditambahkan sebelum variabel lokal.
Dalam Badan Metode, sintaks berikut dapat digunakan untuk membuat kelas dalam anonim, yaitu, sambil mendefinisikan antarmuka atau subclass tertentu dari kelas, objek instance dari subkelas juga dibuat tanpa mendefinisikan nama untuk subkelas:
Public Class Outer {public void start () {thread baru (runable baru () {public void run () {};}). start (); }} Akhirnya, Anda dapat mengawali kelas dalam yang ditentukan di luar metode untuk menambahkan kata kunci statis ke kelas bersarang statis. Ia tidak lagi memiliki karakteristik kelas dalam. Semua, dalam arti sempit, bukan kelas dalam. Kelas bersarang statis tidak berbeda dalam perilaku dan fungsi kelas biasa saat runtime, tetapi ada beberapa perbedaan dalam sintaks ketika referensi pemrograman. Ini dapat didefinisikan sebagai tipe publik, terlindungi, default, pribadi dan lainnya, sementara kelas biasa hanya dapat didefinisikan sebagai tipe publik dan default. Nama kelas kelas bersarang statis di luar adalah "nama kelas eksternal. Nama kelas peminda". Anda dapat membuat kelas bersarang statis secara langsung tanpa membuat objek instance dari kelas eksternal di luar. Misalnya, jika dalam adalah kelas bersarang statis yang ditentukan di kelas luar, Anda dapat menggunakan pernyataan berikut untuk membuat kelas dalam:
Outer.inner batin = new Outer.inner ();
Karena kelas bersarang statis tidak bergantung pada objek instan dari kelas eksternal, kelas bersarang statis dapat mengakses variabel anggota non-statis dari kelas eksternal. Saat mengakses kelas bersarang statis di kelas eksternal, Anda dapat langsung menggunakan nama kelas bersarang statis tanpa menambahkan nama kelas eksternal. Di kelas bersarang statis, Anda juga dapat secara langsung merujuk ke variabel anggota statis dari kelas eksternal tanpa menambahkan nama kelas eksternal.
Kelas dalam yang didefinisikan dalam metode statis juga merupakan kelas bersarang statis. Saat ini, Anda tidak dapat menambahkan kata kunci statis sebelum kelas. Kelas bersarang statis dalam metode statis sangat mirip dengan metode aplikasi kelas dalam dalam metode biasa. Selain secara langsung mengakses variabel anggota statis di kelas eksternal, ia juga dapat mengakses variabel lokal dalam metode statis. Namun, pengubah akhir harus ditambahkan sebelum variabel lokal.
Bisakah kelas dalam merujuk anggota kelas yang berisi? Apakah ada batasan?
Tidak apa -apa. Jika bukan kelas batin yang statis, tidak ada batasan!
Jika Anda memperlakukan kelas bersarang statis sebagai kasus khusus kelas dalam, dalam hal ini, Anda tidak dapat mengakses variabel anggota biasa dari kelas luar, tetapi hanya anggota statis di kelas luar. Misalnya, kode berikut:
kelas luar {static int x; kelas statis dalam {void test () {syso (x); }}}}Kelas Dalam Anonim (Kelas Internal Anonim) dapat memperluas (mewarisi) kelas -kelas lain, dan dapat menerapkan antarmuka (implement) antarmuka (antarmuka)?
Anda dapat mewarisi kelas lain atau mengimplementasikan antarmuka lain. Tidak hanya bisa, tetapi harus!
Misalnya:
impor java.util.date; uji kelas publik memperpanjang tanggal {public static void main (string [] args) {test baru (). test (); } public void test () {System.out.println (super.getClass (). getName ()); }} Hasilnya adalah Tes
Dalam metode pengujian, metode getClass (). GetName () dipanggil secara langsung, dan nama kelas tes dikembalikan. Karena getClass () didefinisikan sebagai final di kelas objek, subkelas tidak dapat menimpa metode. Oleh karena itu, memanggil metode getClass (). GetName () dalam metode pengujian sebenarnya memanggil metode getClass () yang diwarisi dari kelas induk, yang setara dengan memanggil metode super.getClass (). GetName (). Oleh karena itu, metode super.getClass (). GetName () juga harus mengembalikan tes. Jika Anda ingin mendapatkan nama kelas induk, Anda harus menggunakan kode berikut:
getClass (). getSuperclass (). getName ();
Apa perbedaan antara berorientasi objek dan berorientasi pada proses
1 Titik awal berbeda. Pendekatan yang berorientasi objek adalah menangani masalah dunia objektif dengan cara yang sesuai dengan pemikiran konvensional. Ini menekankan bahwa poin -poin penting dari domain masalah secara langsung disinggung dengan antarmuka antara objek. Pendekatan yang berorientasi pada proses menekankan abstraksi dan modularitas proses, yang merupakan konstruksi yang berpusat pada proses atau berurusan dengan masalah dunia yang objektif.
2. Metode berorientasi objek menggunakan logika komputer untuk mensimulasikan keberadaan fisik di dunia objek, dan menggunakan kelas pengumpulan objek sebagai unit dasar untuk menangani masalah, sehingga membuat dunia komputer lebih dekat ke dunia objektif sebanyak mungkin, sehingga membuat masalah menangani masalah lebih langsung dan jelas. Metode yang berorientasi objek menggunakan hierarki kelas untuk mencerminkan pewarisan dan pengembangan antar kelas, sementara metode proses yang berorientasi objek menangani masalah dengan unit dasar yang memungkinkan modul yang secara jelas dan akurat mengekspresikan proses, menggunakan hierarki modul untuk merangkum dunia dan fungsi yang dapat terjadi.
3 Metode pemrosesan data berbeda dari metode program kontrol. Metode berorientasi objek merangkum data dan kode yang sesuai menjadi keseluruhan. Pada prinsipnya, objek lain tidak dapat secara langsung memodifikasi data mereka, yaitu, modifikasi objek hanya dapat diselesaikan oleh fungsi anggota mereka sendiri. Metode program kontrol adalah untuk mengaktifkan dan menjalankan program melalui "Event-Driven". Proses yang berorientasi objek secara langsung memproses data melalui program, dan hasil pemrosesan ditampilkan setelah pemrosesan selesai. Dalam hal mengendalikan program, program ini dipanggil atau dikembalikan ke program sesuai dengan desain, dan tidak dapat menjadi navigasi. Ada hubungan antara modul, antara kontrol dan kontrol, dan panggilan dan panggilan.
4 Metode desain analisis dan pengkodean konversi berbeda. Analisis pendekatan berorientasi objek di seluruh siklus hidup perangkat lunak. Dalam desain dan pengkodean, ini adalah proses yang mulus. Dari analisis hingga desain dan kemudian hingga pengkodean, ia menggunakan model yang konsisten untuk ditampilkan, yaitu, itu adalah koneksi yang mulus. Metode proses yang berorientasi objek menekankan konversi antara desain analitik dan pengkodean sesuai dengan aturan, dan analisis dan desain dan pengkodean di seluruh siklus hidup perangkat lunak tercapai.
Apa keuntungan dari pengembangan yang berorientasi objek
1 efisiensi pengembangan yang lebih tinggi. Menggunakan pengembangan yang berorientasi objek dapat mengabstraksi hal-hal nyata dan secara langsung memetakan praktik nyata menjadi objek yang dikembangkan.
2 Pastikan ketahanan perangkat lunak. Justru karena metode pengembangan yang berorientasi objek memiliki reusability yang tinggi. Selama proses pengembangan, kode yang ada yang telah diuji di bidang terkait telah digunakan kembali. Oleh karena itu, secara alami memainkan peran yang baik dalam mempromosikan ketahanan perangkat lunak.
3 Pastikan pemeliharaan perangkat lunak yang tinggi. Karena metode pengembangan yang berorientasi objek, kode ini dapat dibaca dengan sangat baik. Pada saat yang sama, pola desain yang berorientasi objek membuat struktur kode lebih jelas. Pada saat yang sama, untuk model pengembangan yang berorientasi objek, sudah ada banyak pola desain yang sangat matang. Pola desain ini dapat memungkinkan program untuk hanya memodifikasi beberapa modul saat menghadapi perubahan permintaan, karena lebih nyaman untuk dipertahankan.
Apa perbedaan antara ini dan super
Dalam bahasa Java, ini menunjuk pada objek instance saat ini. Salah satu fungsi yang sangat penting adalah untuk membedakan variabel anggota suatu objek dari parameter formal suatu metode (ketika nama metode berpartisipasi dalam variabel anggota, variabel anggota akan ditimpa).
Super dapat digunakan untuk mengakses metode atau variabel anggota kelas induk. Ketika metode atau variabel anggota kelas anak memiliki nama yang sama dengan kelas induk, metode atau variabel anggota kelas induk juga akan ditimpa. Jika Anda ingin mengakses metode atau variabel anggota kelas induk, Anda hanya dapat mengaksesnya melalui kata kunci super
Cara Mendapatkan Nama Kelas dari Kelas Induk
Bahasa Java menyediakan metode untuk mendapatkan nama kelas: getClass (). GetName (). Pengembang dapat memanggil metode ini untuk mendapatkan nama kelas. Namun, untuk warisan, nama kelas kelas induk tidak dapat diperoleh dengan memanggil metode getClass (). GetName () dari kelas induk, misalnya:
Kelas A {} Tes Kelas Publik Memperluas {public void test () {System.out.println (super.getClass (). GetName ());} public static void main (string []) args) {new test.test ();}}Hasil menjalankan program adalah tes. Alasannya adalah bahwa kelas mana pun dalam bahasa Java mewarisi dari kelas objek. Metode GetClass didefinisikan sebagai asli akhir di kelas objek. Subkelas tidak dapat mengganti metode ini. Oleh karena itu, this.getClass () dan super.getClass () akhirnya memanggil metode getClass () di kelas objek. Definisi metode getClass () di kelas objek adalah: kembalikan kelas runtime objek ini. Kode nama kelas induk dapat diperoleh di subkelas melalui mekanisme refleksi Java sebagai berikut:
Kelas A {} Tes Kelas Publik Memperluas {public void test () {System.out.println (this.getClass (). GetSuperclass (). GetName ());} publci static void main (string [] args) {new test (). Test ();}}Apa perbedaan antara kombinasi dan warisan
Komposisi dan warisan adalah dua cara untuk menggunakan kembali kode dalam berorientasi objek. Kombinasi mengacu pada membuat objek dari kelas asli di kelas baru dan menggunakan kembali fungsi kelas yang ada. Warisan adalah salah satu fitur utama berorientasi objek, yang memungkinkan desainer untuk menentukan implementasi kelas berdasarkan implementasi kelas lain. Baik komposisi dan warisan memungkinkan pengaturan objek anak di kelas baru, kecuali bahwa komposisi ditampilkan, sedangkan warisan tersirat. Ada korespondensi antara kombinasi dan pewarisan: seluruh kelas dalam komposisi sesuai dengan subclass dalam warisan, dan kelas lokal dalam komposisi sesuai dengan kelas induk dalam pewarisan. Saat menggunakannya, ikuti dua prinsip berikut:
1 Kecuali ada hubungan "IS-A" di antara dua kelas, jangan menggunakan warisan dengan mudah, karena penggunaan warisan yang berlebihan akan menghancurkan pemeliharaan kode. Ketika kelas induk dimodifikasi, itu akan mempengaruhi semua subclass yang diwarisi darinya.
2. Jangan gunakan warisan hanya untuk mencapai polimorfisme. Jika hubungan antar kelas bukan "is-a", Anda dapat mencapai tujuan yang sama dengan menerapkan antarmuka dan kombinasi.
Karena bahasa Java hanya mendukung warisan tunggal, jika Anda ingin mewarisi dua kelas atau lebih pada saat yang sama, ia tidak dapat secara langsung diimplementasikan di Java. Pada saat yang sama, dalam bahasa Java, jika terlalu banyak warisan tercapai, konten di kelas akan menjadi kembung. Karena itu, dalam bahasa Java, jika Anda dapat menggunakan kombinasi, cobalah untuk tidak menggunakan warisan.
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!