Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Kelas Dalam Java Dijelaskan: Desain, Sintaks, dan Penggunaan Praktis

Dalam bab ini, kita akan membahas kelas dalam Java.

Kelas Bersarang

Di Java, sama seperti metode, variabel dari sebuah kelas juga dapat memiliki kelas lain sebagai anggotanya. Menulis kelas di dalam kelas lain diizinkan di Java. Kelas yang ditulis di dalam disebut kelas bersarang, dan kelas yang menahan kelas dalam disebut kelas luar.

Sintaks

Berikut adalah sintaks untuk menulis kelas bersarang. Di sini, kelas Outer_Demo adalah kelas luar dan kelas Inner_Demo adalah kelas bersarang.

 class Outer_Demo { class Inner_Demo { } } 

Kelas bersarang dibagi menjadi dua tipe:

Kelas Dalam Java Dijelaskan: Desain, Sintaks, dan Penggunaan Praktis

Kelas Dalam (Kelas Bersarang Non-statis)

Kelas dalam adalah mekanisme keamanan di Java. Kita tahu sebuah kelas tidak dapat dikaitkan dengan pengubah akses private, tetapi jika kita memiliki kelas sebagai anggota dari kelas lain, maka kelas dalam dapat dibuat private. Dan ini juga digunakan untuk mengakses anggota private dari sebuah kelas.

Kelas dalam ada tiga tipe tergantung pada bagaimana dan di mana Anda mendefinisikannya. Mereka adalah:

Kelas Dalam

Membuat kelas dalam cukup sederhana. Anda hanya perlu menulis kelas di dalam kelas. Tidak seperti kelas, kelas dalam dapat bersifat private dan setelah Anda mendeklarasikan kelas dalam sebagai private, ia tidak dapat diakses dari objek di luar kelas.

Berikut adalah program untuk membuat kelas dalam dan mengaksesnya. Dalam contoh yang diberikan, kita membuat kelas dalam private dan mengakses kelas melalui suatu metode.

Contoh

Live Demo
 class Outer_Demo { int num; // inner class private class Inner_Demo { public void print() { System.out.println("This is an inner class"); } } // Accessing he inner class from the method within void display_Inner() { Inner_Demo inner = new Inner_Demo(); inner.print(); } } public class My_class { public static void main(String args[]) { // Instantiating the outer class Outer_Demo outer = new Outer_Demo(); // Accessing the display_Inner() method. outer.display_Inner(); } } 

Di sini Anda dapat melihat bahwa Outer_Demo adalah kelas luar, Inner_Demo adalah kelas dalam, display_Inner() adalah metode di dalamnya tempat kita membuat instance kelas dalam, dan metode ini dipanggil dari metode main.

Jika Anda mengkompilasi dan menjalankan program di atas, Anda akan mendapatkan hasil berikut:

Keluaran

 This is an inner class. 

Mengakses Anggota Private

Seperti yang disebutkan sebelumnya, kelas dalam juga digunakan untuk mengakses anggota private dari sebuah kelas. Misalnya, sebuah kelas memiliki anggota private untuk mengaksesnya. Tulis kelas dalam di dalamnya, kembalikan anggota private dari suatu metode dalam kelas dalam, misalnya, getValue(), dan akhirnya dari kelas lain (yang ingin mengakses anggota private) panggil metode getValue() dari kelas dalam.

Untuk membuat instance kelas dalam, awalnya Anda harus membuat instance kelas luar. Kemudian, menggunakan objek kelas luar, berikut adalah cara Anda dapat membuat instance kelas dalam.

 Outer_Demo outer = new Outer_Demo(); Outer_Demo.Inner_Demo inner = outer.new Inner_Demo(); 

Program berikut menunjukkan cara mengakses anggota private dari sebuah kelas menggunakan kelas dalam.

Contoh

Live Demo
 class Outer_Demo { // private variable of the outer class private int num = 175; // inner class public class Inner_Demo { public int getNum() { System.out.println("This is the getnum method of the inner class"); return num; } } } public class My_class2 { public static void main(String args[]) { // Instantiating the outer class Outer_Demo outer = new Outer_Demo(); // Instantiating the inner class Outer_Demo.Inner_Demo inner = outer.new Inner_Demo(); System.out.println(inner.getNum()); } } 

Jika Anda mengkompilasi dan menjalankan program di atas, Anda akan mendapatkan hasil berikut:

Keluaran

 This is the getnum method of the inner class: 175 

Kelas Dalam Lokal Metode

Di Java, kita dapat menulis kelas di dalam suatu metode dan ini akan menjadi tipe lokal. Sama seperti variabel lokal, cakupan kelas dalam terbatas dalam metode tersebut.

Kelas dalam lokal metode hanya dapat diinstantiasi dalam metode tempat kelas dalam didefinisikan. Program berikut menunjukkan cara menggunakan kelas dalam lokal metode.

Contoh

Live Demo
 public class Outerclass { // instance method of the outer class void my_Method() { int num = 23; // method-local inner class class MethodInner_Demo { public void print() { System.out.println("This is method inner class "+num); } } // end of inner class // Accessing the inner class MethodInner_Demo inner = new MethodInner_Demo(); inner.print(); } public static void main(String args[]) { Outerclass outer = new Outerclass(); outer.my_Method(); } } 

Jika Anda mengkompilasi dan menjalankan program di atas, Anda akan mendapatkan hasil berikut:

Keluaran

 This is method inner class 23 

Kelas Dalam Anonim

Sebuah kelas dalam yang dideklarasikan tanpa nama kelas dikenal sebagai kelas dalam anonim. Dalam kasus kelas dalam anonim, kita mendeklarasikan dan membuat instance mereka pada saat yang sama. Secara umum, mereka digunakan setiap kali Anda perlu mengganti metode dari sebuah kelas atau antarmuka. Sintaks kelas dalam anonim adalah sebagai berikut:

Sintaks

 AnonymousInner an_inner = new AnonymousInner() { public void my_method() { ........ ........ } }; 

Program berikut menunjukkan cara mengganti metode dari sebuah kelas menggunakan kelas dalam anonim.

Contoh

Live Demo
 abstract class AnonymousInner { public abstract void mymethod(); } public class Outer_class { public static void main(String args[]) { AnonymousInner inner = new AnonymousInner() { public void mymethod() { System.out.println("This is an example of anonymous inner class"); } }; inner.mymethod(); } } 

Jika Anda mengkompilasi dan menjalankan program di atas, Anda akan mendapatkan hasil berikut:

Keluaran

 This is an example of anonymous inner class 

Dengan cara yang sama, Anda dapat mengganti metode dari kelas konkret serta antarmuka menggunakan kelas dalam anonim.

Kelas Dalam Anonim sebagai Argumen

Secara umum, jika suatu metode menerima objek dari antarmuka, kelas abstrak, atau kelas konkret, maka kita dapat mengimplementasikan antarmuka, memperluas kelas abstrak, dan melewatkan objek ke metode. Jika itu adalah kelas, kita dapat langsung melewatkannya ke metode.

Namun dalam ketiga kasus tersebut, Anda dapat melewatkan kelas dalam anonim ke metode. Berikut adalah sintaks untuk melewatkan kelas dalam anonim sebagai argumen metode:

 obj.my_Method(new My_Class() { public void Do() { ..... ..... } }); 

Program berikut menunjukkan cara melewatkan kelas dalam anonim sebagai argumen metode.

Contoh

Live Demo
 // interface interface Message { String greet(); } public class My_class { // method which accepts the object of interface Message public void displayMessage(Message m) { System.out.println(m.greet() + ", This is an example of anonymous inner class as an argument"); } public static void main(String args[]) { // Instantiating the class My_class obj = new My_class(); // Passing an anonymous inner class as an argument obj.displayMessage(new Message() { public String greet() { return "Hello"; } }); } } 

Jika Anda mengkompilasi dan menjalankan program di atas, ia memberi Anda hasil berikut:

Keluaran

 Hello, This is an example of anonymous inner class as an argument 

Kelas Bersarang Statis

Sebuah kelas dalam statis adalah kelas bersarang yang merupakan anggota statis dari kelas luar. Ia dapat diakses tanpa membuat instance kelas luar, menggunakan anggota statis lain. Sama seperti anggota statis, kelas bersarang statis tidak memiliki akses ke variabel instance dan metode kelas luar. Sintaks kelas bersarang statis adalah sebagai berikut:

Sintaks

 class MyOuter { static class Nested_Demo { } } 

Membuat instance kelas bersarang statis sedikit berbeda dari membuat instance kelas dalam. Program berikut menunjukkan cara menggunakan kelas bersarang statis.

Contoh

Live Demo
 public class Outer { static class Nested_Demo { public void my_method() { System.out.println("This is my nested class"); } } public static void main(String args[]) { Outer.Nested_Demo nested = new Outer.Nested_Demo(); nested.my_method(); } } 

Jika Anda mengkompilasi dan menjalankan program di atas, Anda akan mendapatkan hasil berikut:

Keluaran

 This is my nested class 

java

  1. Memahami Kata Kunci final Java: Variabel, Metode, dan Kelas
  2. Operator instanceof Java: Panduan Lengkap
  3. Menguasai Kelas Bersarang dan Kelas Dalam Java: Jenis, Contoh, dan Praktik Terbaik
  4. Memahami Kelas Bersarang Statis Java: Penggunaan, Perbedaan, dan Contoh
  5. Menguasai Kelas Dalam Anonim Java: Definisi, Sintaks, dan Contoh Praktis
  6. Pola Singleton Java Dijelaskan: Cara Menerapkan dan Menggunakannya dengan Aman
  7. Menguasai Refleksi Java: Memeriksa Kelas, Metode, dan Field pada Waktu Eksekusi
  8. Menguasai Java ObjectOutputStream: Serialisasi, Metode, dan Contoh Praktis
  9. Menguasai Java Generics – Membangun Kode yang Dapat Digunakan Kembali dan Aman Tipe
  10. Pengoperasian File Java dengan java.io – Pembuatan, Pembacaan, Penulisan & Penghapusan