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

Java - Kelas dalam

Dalam bab ini, kita akan membahas kelas dalam Java.

Kelas Bersarang

Di Java, seperti halnya metode, variabel dari suatu kelas juga dapat memiliki kelas lain sebagai anggotanya. Menulis kelas di dalam kelas lain diperbolehkan di Jawa. Kelas yang ditulis di dalamnya disebut kelas bersarang , dan kelas yang menampung kelas dalam disebut kelas luar .

Sintaks

Berikut ini 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 jenis −

Kelas Dalam (Kelas Bersarang Non-statis)

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

Kelas dalam terdiri dari tiga jenis 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 menjadi pribadi dan setelah Anda mendeklarasikan kelas dalam sebagai pribadi, kelas dalam tidak dapat diakses dari objek di luar kelas.

Berikut ini adalah program untuk membuat kelas dalam dan mengaksesnya. Dalam contoh yang diberikan, kami membuat kelas dalam menjadi pribadi dan mengakses kelas melalui sebuah metode.

Contoh

Demo Langsung
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 mengamati bahwa Outer_Demo adalah kelas luar, Inner_Demo adalah kelas dalam, display_Inner() adalah metode di mana kita membuat instance kelas dalam, dan metode ini dipanggil dari main metode.

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

Keluaran

This is an inner class.

Mengakses Anggota Pribadi

Seperti disebutkan sebelumnya, kelas dalam juga digunakan untuk mengakses anggota pribadi kelas. Misalkan, sebuah kelas memiliki anggota pribadi untuk mengaksesnya. Tulis kelas dalam di dalamnya, kembalikan anggota pribadi dari metode di dalam kelas dalam, katakanlah, getValue() , dan terakhir dari kelas lain (dari mana Anda ingin mengakses anggota pribadi) panggil metode getValue() dari kelas dalam.

Untuk membuat instance kelas dalam, awalnya Anda harus membuat instance kelas luar. Setelah itu, dengan menggunakan objek kelas luar, berikut adalah cara untuk menginisiasi kelas dalam.

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

Program berikut menunjukkan cara mengakses anggota pribadi kelas menggunakan kelas dalam.

Contoh

Demo Langsung
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 sebagai berikut

Keluaran

This is the getnum method of the inner class: 175

Kelas Dalam Metode-lokal

Di Java, kita bisa menulis kelas di dalam metode dan ini akan menjadi tipe lokal. Seperti variabel lokal, ruang lingkup kelas dalam dibatasi dalam metode.

Kelas dalam metode-lokal hanya dapat dipakai di dalam metode di mana kelas dalam didefinisikan. Program berikut menunjukkan cara menggunakan kelas dalam metode-lokal.

Contoh

Demo Langsung
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 sebagai berikut

Keluaran

This is method inner class 23

Kelas Dalam Anonim

Kelas dalam yang dideklarasikan tanpa nama kelas dikenal sebagai kelas dalam anonim . Dalam kasus kelas dalam anonim, kami mendeklarasikan dan membuat instance mereka secara bersamaan. Umumnya, mereka digunakan kapan pun Anda perlu mengganti metode 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 kelas menggunakan kelas dalam anonim.

Contoh

Demo Langsung
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 sebagai berikut

Keluaran

This is an example of anonymous inner class

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

Kelas Dalam Anonim sebagai Argumen

Secara umum, jika suatu metode menerima objek antarmuka, kelas abstrak, atau kelas konkret, maka kita dapat mengimplementasikan antarmuka, memperluas kelas abstrak, dan meneruskan objek ke metode. Jika itu adalah sebuah kelas, maka kita bisa langsung meneruskannya ke metode.

Tetapi dalam ketiga kasus tersebut, Anda dapat meneruskan 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

Demo Langsung
// 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, itu memberi Anda hasil sebagai berikut

Keluaran

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

Kelas Bersarang Statis

Kelas dalam statis adalah kelas bersarang yang merupakan anggota statis dari kelas luar. Itu dapat diakses tanpa membuat instance kelas luar, menggunakan anggota statis lainnya. Sama seperti anggota statis, kelas bersarang statis tidak memiliki akses ke variabel instan 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

Demo Langsung
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 sebagai berikut

Keluaran

This is my nested class

java

  1. Kata kunci terakhir Java
  2. Instance Java dari Operator
  3. Java Nested dan Kelas Dalam
  4. Kelas Statis Bersarang Java
  5. Kelas Anonim Java
  6. Kelas Tunggal Jawa
  7. Refleksi Jawa
  8. Kelas Java ObjectOutputStream
  9. Java Generik
  10. Kelas File Java