Java 中實現 Runnable 介面的內部類和匿名內部類


在 Java 中,內部類和匿名內部類是兩種巢狀類。這裡,巢狀類指的是一個類在另一個類內部的類。內部類是在沒有 static 關鍵字的情況下定義的巢狀類,即內部類是非靜態巢狀類。沒有名稱的巢狀內部類型別稱為匿名類。

Runnable 介面是建立 Java 多執行緒中執行緒的一種方式。Java 提供了多執行緒的功能來同時執行多個操作。在多執行緒中,操作被分成多個較小的部分,稱為執行緒。讓我們探索如何使用實現 Runnable 介面的內部類和匿名內部類。

實現 Runnable 介面的內部類和匿名內部類

在本節中,我們將學習實現 Runnable 介面的內部類和匿名內部類。

顯示實現 Runnable 介面的內部類的 Java 程式

讓我們從介紹內部類開始。

內部類

非靜態或內部類可以訪問其外部類的所有靜態和非靜態方法和成員變數。它也可以訪問私有成員,但是外部類不能訪問內部類的私有成員。內部類是最常用的巢狀類型別。

語法

class Class_otr {
   // Outer class body
   class Class_inn { 
	  // Inner class body
   }
}

為了建立類,我們使用了 'class' 關鍵字。'Class_otr' 是外部類的名稱,'Class_inn' 是內部類的名稱。

示例 1

以下示例演示了實現 Runnable 介面的內部類的實際實現。

方法

  • 首先,定義一個外部類,並在其中定義實現 Runnable 介面的內部類。

  • 在這個內部類中,建立它的建構函式並覆蓋 'run()' 方法。

  • 接下來,定義另一個方法,在這個方法中,建立內部類的兩個例項。使用這些例項,建立兩個執行緒來執行操作。然後,使用內建方法 'start()' 來啟動執行緒的過程。

  • 在 main() 方法中,建立一個外部類的例項並呼叫 'executeThread()' 方法來啟動操作。

class OtrClass {
   // Creating an Inner class that implements Runnable
   class InrClass implements Runnable {
      private String greet;
      // Constructor
      public InrClass(String greet) {
         this.greet = greet;
      }
      // Overriding the run() method
      public void run() {
         System.out.println(greet);
      }
   }
   // defining method to execute threads using inner classes
   public void executeThread() {
      // instances of the inner class
      InrClass ic1 = new InrClass("Hello and Welcome!!");
      InrClass ic2 = new InrClass("Tutorials Point");
      // Creating threads with instances of inner class 
      Thread thr1 = new Thread(ic1);
      Thread thr2 = new Thread(ic2);
      // Start the threads
      thr1.start();
      thr2.start();
   }
}
public class RunableExp1 {
   public static void main(String[] args) {
      OtrClass oc = new OtrClass(); // instance of Outer class
      oc. executeThread(); // calling method to start threads
   }
}

輸出

Hello and Welcome!!
Tutorials Point

顯示實現 Runnable 介面的匿名內部類的 Java 程式

在進入程式之前,讓我們討論一下匿名內部類。

匿名內部類

如前所述,它是一種沒有名稱的內部類。它的宣告和初始化同時發生。它主要用於覆蓋方法。

我們可以使用 abstract 關鍵字來宣告匿名類。

語法

Class_name object_name = new Class_name() {
    return_type method_name() {
	// code to be executed
    }
};

示例 2

以下示例說明了實現 Runnable 介面的匿名內部類的用法。

方法

  • 建立一個實現 Runnable 介面的抽象類。

  • 然後,在 main() 方法內部建立一個匿名內部類,覆蓋之前的抽象類。

  • 在這個匿名內部類中,覆蓋內建方法 'run()'。

  • 建立一個執行緒並使用 'start()' 方法啟動它。

// abstract class that implements Runnable
abstract class Anonymous implements Runnable { } 
public class RunableExp2 {
   public static void main(String args[]) {
      // creating anonymous inner class
      Anonymous thr = new Anonymous() { 
         // overriding run() method
         public void run() { 
            System.out.println("Hello! from anonymous inner class");
         }
      };
      Thread thr1 = new Thread(thr); // defining a thread
      thr1.start(); // starting the thread	
   }
}

輸出

Hello! from anonymous inner class

結論

我們從定義內部類和匿名內部類開始這篇文章,在下一節中,我們詳細討論了它們。此外,我們還發現了用於在 Java 中執行多執行緒操作的 Runnable 介面。我們已經看到了實現 Runnable 介面的內部類和匿名內部類的兩個不同示例。

更新於:2023年7月20日

瀏覽量:549

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告