Sistem Pemrograman Konsep OOP di Java – Berikut ini adalah beberapa topik paling populer yang terkait dengan pemrograman Berorientasi Objek.
Sistem Pemrograman Konsep OOP di Java
freeprogrammingresources – Sistem pemrograman berorientasi objek (OOPs) adalah paradigma pemrograman yang didasarkan pada konsep “objek” yang berisi data dan metode. Tujuan utama dari pemrograman berorientasi objek adalah untuk meningkatkan fleksibilitas dan pemeliharaan program. Pemrograman berorientasi objek menyatukan data dan perilakunya (metode) di satu lokasi (objek) membuatnya lebih mudah untuk memahami cara kerja suatu program. Kami akan membahas setiap fitur OOP secara mendetail sehingga Anda tidak akan kesulitan memahami Konsep OOP.
Konstruktor di Java – Sebuah studi lengkap!!
Konstruktor adalah blok kode yang menginisialisasi objek yang baru dibuat. Konstruktor menyerupai metode instance di Java tetapi itu bukan metode karena tidak memiliki tipe pengembalian. Singkatnya konstruktor dan metode berbeda (Lebih lanjut tentang ini di akhir panduan ini). Orang sering menyebut konstruktor sebagai jenis metode khusus di Java.
Bagaimana cara kerja konstruktor?
Untuk memahami cara kerja konstruktor, mari kita ambil contoh. katakanlah kita memiliki kelas MyClass.
Saat kita membuat objek MyClass seperti ini: Obj Kelas Saya = Kelas Saya baru
Kata kunci baru di sini membuat objek kelas MyClassdan memanggil konstruktor untuk menginisialisasi objek yang baru dibuat ini.
Anda mungkin sedikit tersesat di sini karena saya belum menunjukkan kepada Anda contoh inisialisasi apa pun, mari kita lihat kode di bawah ini:
Program konstruktor sederhana di java
Di sini kita telah membuat sebuah objek objkelas Hellodan kemudian kita menampilkan variabel instan namedari objek tersebut. Seperti yang Anda lihat bahwa outputnya adalah BeginnersBook.comapa yang telah kami berikan nameselama inisialisasi di konstruktor. Ini menunjukkan bahwa ketika kita membuat objek obj, konstruktor dipanggil. Dalam contoh ini kami telah menggunakan kata kunci this , yang merujuk ke objek saat ini, objek objdalam contoh ini. Kami akan membahas kata kunci ini secara rinci dalam tutorial berikutnya.
Jenis Konstruktor
Ada tiga jenis konstruktor: Default, konstruktor No-arg dan Parameterized.
Konstruktor default
Jika Anda tidak mengimplementasikan konstruktor apa pun di kelas Anda, kompiler Java menyisipkan konstruktor default ke dalam kode Anda atas nama Anda. Konstruktor ini dikenal sebagai konstruktor default. Anda tidak akan menemukannya di kode sumber Anda (file java) karena akan dimasukkan ke dalam kode selama kompilasi dan ada di file .class. Proses ini ditunjukkan pada diagram di bawah ini:
Jika Anda mengimplementasikan konstruktor apa pun maka Anda tidak lagi menerima konstruktor default dari kompiler Java.
Konstruktor tanpa argumen: Konstruktor tanpa argumen dikenal sebagai konstruktor no-arg . Tanda tangan sama dengan konstruktor default, namun badan dapat memiliki kode apa pun tidak seperti konstruktor default di mana badan konstruktor kosong.
Meskipun Anda mungkin melihat beberapa orang mengklaim bahwa konstruktor default dan no-arg itu sama tetapi kenyataannya tidak, bahkan jika Anda menulis Public Demo() { } di kelas Anda Demo, itu tidak dapat disebut konstruktor default karena Anda telah menulis kode dia.
Konstruktor berparameter
Konstruktor dengan argumen (atau Anda bisa mengatakan parameter) dikenal sebagai konstruktor Parameterized .
- Contoh: konstruktor berparameter
Dalam contoh ini kita memiliki konstruktor berparameter dengan dua parameter iddan name. Saat membuat objek obj1dan obj2saya telah melewati dua argumen sehingga konstruktor ini dipanggil setelah pembuatan obj1 dan obj2.
- Contoh2: konstruktor berparameter
Dalam contoh ini, kita memiliki dua konstruktor, konstruktor default dan konstruktor berparameter. Ketika kami tidak melewatkan parameter apa pun saat membuat objek menggunakan kata kunci baru maka konstruktor default dipanggil, namun ketika Anda melewati parameter, konstruktor berparameter yang cocok dengan daftar parameter yang diteruskan akan dipanggil.
Bagaimana jika Anda hanya mengimplementasikan konstruktor berparameter di kelas?
Output : Ini akan menimbulkan kesalahan kompilasi. Alasannya adalah, pernyataan Example3 myobj = new Example3()tersebut memanggil konstruktor default yang tidak kita miliki dalam program kita. ketika Anda tidak mengimplementasikan konstruktor apa pun di kelas Anda, kompiler memasukkan konstruktor default ke dalam kode Anda, namun ketika Anda mengimplementasikan konstruktor apa pun (dalam contoh di atas saya telah menerapkan konstruktor berparameter dengan parameter int), maka Anda tidak menerima konstruktor default oleh compiler ke dalam kode Anda.
Baca Juga : Tutorial Dasar-dasar Belajar Pemrograman Java untuk Pemula
Jika kita menghapus konstruktor berparameter dari kode di atas maka program akan berjalan dengan baik, karena compiler akan memasukkan konstruktor default ke dalam kode Anda.
Rantai Konstruktor
Ketika konstruktor memanggil konstruktor lain dari kelas yang sama maka ini disebut rantai konstruktor.
Setiap kali konstruktor kelas anak dipanggil, itu secara implisit memanggil konstruktor kelas induk. Anda juga dapat mengatakan bahwa kompiler menyisipkan super();pernyataan di awal konstruktor kelas anak.
Kelebihan Konstruktor
Overloading konstruktor adalah konsep memiliki lebih dari satu konstruktor dengan daftar parameter yang berbeda, sedemikian rupa sehingga setiap konstruktor melakukan tugas yang berbeda.
kelebihan konstruktor
Konstruktor Salinan Java
Konstruktor salinan digunakan untuk menyalin nilai dari satu objek ke objek lain.
rekap cepat
- Setiap kelas memiliki konstruktor apakah itu kelas normal atau kelas abstrak.
- Konstruktor bukan metode dan mereka tidak memiliki tipe pengembalian apa pun.
- Nama konstruktor harus sesuai dengan nama kelas.
- Konstruktor dapat menggunakan penentu akses apa pun, mereka juga dapat dideklarasikan sebagai pribadi.
- Konstruktor pribadi dimungkinkan di Java tetapi hanya ada ruang lingkup di dalam kelas.
- Seperti metode konstruktor juga dapat memiliki nama yang sama dengan nama kelas, tetapi mereka masih memiliki tipe pengembalian, meskipun kita dapat mengidentifikasi mereka bahwa mereka adalah metode bukan konstruktor.
- Jika Anda tidak mengimplementasikan konstruktor apa pun di dalam kelas, kompiler akan melakukannya.
this() dan super() harus menjadi pernyataan pertama dalam kode konstruktor. Jika Anda tidak menyebutkannya, kompiler melakukannya untuk Anda. - Kelebihan konstruktor dimungkinkan tetapi penggantian tidak dimungkinkan. Yang berarti kita dapat memiliki konstruktor yang kelebihan beban di kelas kita tetapi kita tidak dapat menimpa konstruktor.
- Konstruktor tidak dapat diwariskan.
- Jika kelas Super tidak memiliki konstruktor no-arg(default) maka kompiler tidak akan memasukkan konstruktor default di kelas anak seperti dalam skenario normal.
- Antarmuka tidak memiliki konstruktor .
- Kelas abstrak dapat memiliki konstruktor dan dipanggil ketika kelas, yang mengimplementasikan antarmuka, dipakai. (yaitu pembuatan objek kelas beton).
- Konstruktor juga dapat memanggil konstruktor lain dari kelas yang sama – Dengan menggunakan this(). Jika Anda ingin memanggil konstruktor berparameter maka lakukan seperti ini: this(parameter list) .
Perbedaan antara Konstruktor dan Metode
Saya tahu saya seharusnya menyebutkannya di awal panduan ini, tetapi saya ingin membahas semuanya secara mengalir. Semoga Anda tidak keberatan 🙂
- Tujuan konstruktor adalah untuk menginisialisasi objek kelas sedangkan tujuan metode adalah untuk melakukan tugas dengan mengeksekusi kode java.
- Konstruktor tidak bisa abstrak, final, statis dan disinkronkan sementara metode bisa.
- Konstruktor tidak memiliki tipe pengembalian sementara metode memilikinya.
Java – Kelas Statis, Blok, Metode dan Variabel
Kata kunci statis dapat digunakan dengan kelas, variabel, metode dan blok. Anggota statis milik kelas, bukan contoh tertentu, ini berarti jika Anda membuat anggota statis, Anda dapat mengaksesnya tanpa objek. Mari kita ambil contoh untuk memahami ini:
Di sini kita memiliki metode statis myMethod(), kita dapat memanggil metode ini tanpa objek apa pun karena ketika kita membuat anggota statis, itu menjadi tingkat kelas. Jika kita menghapus kata kunci static dan menjadikannya non-statis maka kita harus membuat objek kelas untuk memanggilnya.
Blok Statis
Blok statis digunakan untuk menginisialisasi variabel statis. Blok ini dieksekusi ketika kelas dimuat dalam memori. Sebuah kelas dapat memiliki beberapa blok Statis, yang akan dieksekusi dalam urutan yang sama di mana mereka telah ditulis ke dalam program.
- Contoh 1: Blok statis tunggal
Seperti yang Anda lihat bahwa kedua variabel statis telah diinisialisasi sebelum kita mengaksesnya dalam metode utama.
- Contoh 2: Beberapa blok Statis
Mari kita lihat bagaimana beberapa blok statis bekerja di Java. Mereka mengeksekusi dalam urutan yang diberikan yang berarti blok statis pertama dieksekusi sebelum blok statis kedua. Itulah alasannya, nilai yang diinisialisasi oleh blok pertama ditimpa oleh blok kedua.
Variabel Statis Java
Variabel statis umum untuk semua instance (atau objek) kelas karena itu adalah variabel tingkat kelas. Dengan kata lain, Anda dapat mengatakan bahwa hanya satu salinan variabel statis yang dibuat dan dibagikan di antara semua instance kelas. Alokasi memori untuk variabel tersebut hanya terjadi sekali ketika kelas dimuat dalam memori.
Beberapa Poin Penting: Variabel statis juga dikenal sebagai Variabel Kelas. Tidak seperti variabel non-statis , variabel tersebut dapat diakses secara langsung dalam metode statis dan non-statis.
- Contoh 1: Variabel statis dapat diakses langsung dalam metode Statis
Di sini kita memiliki metode statis disp()dan dua variabel statis var1dan var2. Kedua variabel diakses langsung dalam metode statis.
- Contoh 2: Variabel statis dibagikan di antara semua instance kelas
Dalam contoh ini, variabel String adalah non-statis dan variabel integer adalah Statis. Seperti yang Anda lihat di output bahwa variabel non-statis berbeda untuk kedua objek tetapi variabel statis dibagi di antara mereka, itulah alasan perubahan yang dilakukan pada variabel statis oleh objek ob2tercermin di kedua objek.
Metode Statis Java
Metode Statis dapat mengakses variabel kelas (variabel statis) tanpa menggunakan objek (instance) kelas, namun metode non-statis dan variabel non-statis hanya dapat diakses menggunakan objek.
Metode statis dapat diakses secara langsung dalam metode statis dan non-statis.
Java Inheritance dengan contoh
Proses dimana satu kelas memperoleh properti (anggota data) dan fungsionalitas (metode) dari kelas lain disebut peInheritance . Tujuan dari peInheritance adalah untuk menyediakan penggunaan kembali kode sehingga kelas hanya menulis fitur unik dan sisa properti umum dan fungsi dapat diperpanjang dari kelas lain.
- Kelas Anak: Kelas yang memperluas fitur dari kelas lain dikenal sebagai kelas anak, subkelas atau kelas turunan.
- Kelas Induk: Kelas yang properti dan fungsinya digunakan (diwarisi) oleh kelas lain dikenal sebagai kelas induk, kelas super, atau kelas Dasar.
Inheritance adalah proses mendefinisikan kelas baru berdasarkan kelas yang ada dengan memperluas anggota data umum dan metode. Inheritance memungkinkan kita untuk menggunakan kembali kode, meningkatkan penggunaan kembali dalam aplikasi java Anda.
Catatan: Keuntungan terbesar dari Inheritance adalah bahwa kode yang sudah ada di kelas dasar tidak perlu ditulis ulang di kelas anak. Ini berarti bahwa anggota data (variabel instance) dan metode kelas induk dapat digunakan di kelas anak sebagai.
Jika Anda merasa sulit untuk memahami apa itu kelas dan objek, lihat panduan yang telah saya bagikan tentang pemrograman berorientasi objek: Konsep OOP
Sintaks: Inheritance di Java
Untuk mewarisi kelas, kami menggunakan kata kunci extends. Di sini kelas XYZ adalah kelas anak dan kelas ABC adalah kelas induk. Kelas XYZ mewarisi properti dan metode kelas ABC.
Contoh Inheritance
Dalam contoh ini, kami memiliki kelas dasar Teacherdan subkelas PhysicsTeacher. Karena kelas PhysicsTeachermemperluas penunjukan dan properti perguruan tinggi dan metode work() dari kelas dasar, kita tidak perlu mendeklarasikan properti dan metode ini di subkelas.
Di sini kami memiliki metode collegeName, designation dan work() yang umum untuk semua guru sehingga kami telah mendeklarasikannya di kelas dasar, dengan cara ini kelas anak suka MathTeacher, MusicTeacherdan PhysicsTeachertidak perlu menulis kode ini dan dapat digunakan langsung dari basis kelas.
Berdasarkan contoh di atas kita dapat mengatakan bahwa PhysicsTeacher IS-A Teacher . Ini berarti bahwa kelas anak memiliki hubungan IS-A dengan kelas induk. Ini adalah Inheritance yang dikenal sebagai hubungan IS-A antara kelas anak dan orang tua
Catatan: Kelas turunan mewarisi semua anggota dan metode yang dideklarasikan sebagai publik atau dilindungi. Jika anggota atau metode kelas super dideklarasikan sebagai pribadi maka kelas turunan tidak dapat menggunakannya secara langsung. Anggota pribadi hanya dapat diakses di kelasnya sendiri. Anggota pribadi tersebut hanya dapat diakses menggunakan metode pengambil dan penyetel kelas super publik atau yang dilindungi seperti yang ditunjukkan pada contoh di bawah ini.
Poin penting yang perlu diperhatikan dalam contoh di atas adalah bahwa kelas anak dapat mengakses anggota pribadi kelas induk melalui metode kelas induk yang dilindungi . Saat kita membuat variabel instan (anggota data) atau metode protected , ini berarti mereka hanya dapat diakses di kelas itu sendiri dan di kelas anak. Ini publik, dilindungi, pribadi dll semua penentu akses dan kami akan membahasnya dalam tutorial mendatang.
Jenis-jenis Inheritance
Untuk mempelajari jenis-jenis Inheritance secara rinci, lihat: Jenis -Jenis Inheritance di Java.
- Inheritance Tunggal : mengacu pada hubungan kelas anak dan orang tua di mana kelas memperluas kelas lain.
- Inheritance bertingkat : mengacu pada hubungan kelas anak dan induk di mana kelas memperluas kelas anak. Misalnya kelas C meng-extend kelas B dan kelas B meng-extend kelas A.
- Multiple Inheritance : mengacu pada konsep satu kelas yang memperluas lebih dari satu kelas, yang berarti kelas anak memiliki dua kelas induk. Misalnya kelas C memperluas kelas A dan B. Java tidak mendukung peInheritance berganda, baca selengkapnya di sini .
- Inheritance hibrida : Kombinasi lebih dari satu jenis peInheritance dalam satu program. Misal kelas A & B meng-extend kelas C dan kelas D meng-extend kelas A maka ini adalah contoh peInheritance hybrid karena merupakan gabungan dari peInheritance tunggal dan hierarkis.