Cách triển khai lớp ẩn danh trong Java



Blog này sẽ cung cấp cho bạn kiến ​​thức Chi tiết và Toàn diện về Lớp ẩn danh trong Java với các ví dụ và cách nó khác với Lớp thông thường.

Các lớp ẩn danh cho phép bạn viết mã nhỏ và cho phép bạn khai báo và khởi tạo lớp cùng một lúc. Các lớp này không có tên, nó được sử dụng khi bạn muốn sử dụng bất kỳ lớp nào chỉ một lần. Nó là một khía cạnh quan trọng của Lập trình Java. Chúng ta hãy hiểu Lớp ẩn danh trong Java là gì theo thứ tự sau:

Khai báo các lớp ẩn danh





Thông thường, chúng ta tạo một lớp, tức là chúng ta khai báo lớp nhưng, các lớp ẩn danh là các biểu thức có nghĩa là chúng ta định nghĩa lớp ẩn danh trong một lớp khác biểu hiện . Nói một cách đơn giản, lớp bên trong ẩn danh là lớp không có tên và chỉ một đối tượng được tạo.

Anonymous-Class-In-Java



Lớp ẩn danh rất hữu ích khi chúng ta phải tạo một thể hiện của đối tượng với các phương thức nạp chồng của một lớp hoặc giao diện mà không cần tạo một lớp con của lớp.

Ẩn danh có thể được tạo theo hai cách:

  • Lớp (cũng có thể là Tóm tắt)
  • Giao diện

Trong lớp ẩn danh, chúng ta có thể khai báo như sau:



  • Lĩnh vực
  • Các phương pháp bổ sung
  • Bộ khởi tạo phiên bản
  • Các lớp học địa phương

Cú pháp của lớp ẩn danh trong Java

Cú pháp của một lớp ẩn danh giống như hàm tạo ngoại trừ việc có một định nghĩa lớp trong khối như được hiển thị trong đoạn mã dưới đây:

// AnonymousClass = interface, lớp trừu tượng / cụ thể. AnonymousClass t = new AnonymousClass () {// các phương thức và trường public void someMethod () {// mã ở đây}}

Hãy xem ví dụ sau:

Ví dụ sau,HelloAnonymousClass, sử dụng các lớp ẩn danh trong các câu lệnh khởi tạo của các biến cục bộchào ai đónhưng, sử dụng một lớp cục bộ để khởi tạo biếnhelloWorld:

public class HelloAnonymousClass {interface HelloWorld {public void sayHello () public void sayHelloTo (String someone)} public void sayHello () {class GreetWorld triển khai HelloWorld {String name = 'world' public void sayHello () {sayHelloTo ('world')} public void sayHelloTo (String someone) {name = someone System.out.println ('Hello' + name)}} HelloWorld welcomeWorld = new GreetWorld () HelloWorld welcomeSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} public void sayHelloTo (String someone) {name = someone System.out.println ('hola' + name)}} welcomeWorld.sayHello () welcomeSomeone.sayHelloTo ('Doe')} public static void main (String ... args) {HelloAnonymousClass myApp = new HelloAnonymousClass () myApp.sayHello ()}}

Như chúng ta đã thấy rằng lớp ẩn danh là một biểu thức, cú pháp cũng giống như hàm tạo ngoại trừ có định nghĩa lớp trong khối. Xem xét việc khởi tạo đối tượng welcomeSomeone:

HelloWorld welcomeSomeone = new HelloWorld () {String name = 'jon' public void sayHello () {sayHelloTo ('Jon')} public void sayHelloTo (String someone) {name = someone System.out.println ('hola' + name) }}

Lớp ẩn danh bao gồm các thành phần sau:

  • nhà điều hành mới.
  • Nó có thể triển khai một giao diện hoặc mở rộng một lớp. Như trong ví dụ trên, nó đang triển khai giao diện.
  • Nó chứa các dấu ngoặc đơn giống như các lớp bình thường để truyền các đối số cho hàm tạo.
  • Chứa phần thân chứa các khai báo phương thức. Khai báo không được phép.

Lớp ẩn danh nên là một phần của các câu lệnh.

sự khác biệt giữa java và c ++ là gì

Trong ví dụ trên, biểu thức lớp ẩn danh là một phần của câu lệnh được khởi tạo bởichào ai đó.

Các cách tạo lớp ẩn danh trong Java

Có 3 cách để tạo Lớp bên trong trong Java

  • Bằng cách mở rộng lớp học

Chúng ta có thể tạo một lớp bên trong ẩn danh bằng cách mở rộng lớp khác, giả sử chúng ta phải tạo một luồng bằng cách sử dụng lớp Thread, chúng ta có thể tạo một lớp bên trong ẩn danh thay vì tạo một lớp riêng biệt.

// Chương trình minh họa lớp Nội tại ẩn danh bằng cách mở rộng lớp lớp khác AnonymousThreadClass {public static void main (String [] args) {// Lớp Nội ẩn danh mở rộng lớp Thread t = new Thread () {public void run () {System .out.println ('Con!')}} t.start () System.out.println ('Parent!')}}

Đầu ra:

Cha mẹ!

Đứa trẻ!

  • Bằng cách triển khai giao diện

Chúng ta cũng có thể tạo một lớp bên trong ẩn danh bằng cách triển khai giao diện. Bây giờ, khi chúng ta tạo một lớp bên trong bằng cách mở rộng lớp tương tự, chúng ta có thể tạo một lớp thực hiện một giao diện.

// Chương trình minh họa lớp Nội tại ẩn danh bằng cách triển khai lớp giao diện AnonymousThreadClass {public static void main (String [] args) {// Lớp Nội ẩn danh triển khai giao diện Runnable r = new Runnable () {public void run () {System.out .println ('Con!')}} Luồng t = new Thread (r) t.start () System.out.println ('Parent!')}}

Đầu ra:

Cha mẹ!

Đứa trẻ!

  • Là một đối số cho một Phương thức / Khối mã lệnh

Để hiểu cú pháp, hãy xem ví dụ dưới đây:

// Chương trình minh họa lớp Anonymous Inner bằng đối số class AnonymousThreadClass {public static void main (String [] args) {// Lớp ẩn danh với đối số phương thức khởi tạo Thread t = new Thread (new Runnable () {public void run () {System. out.println ('Con!')}}) t.start () System.out.println ('Parent!')}}

Đầu ra:

Cha mẹ!

Đứa trẻ!

Sự khác biệt giữa Lớp bên trong Thông thường và Ẩn danh

  • Chúng tôi có thể thực hiện nhiều giao diện bằng cách sử dụng lớp bình thường, nhưng với lớp bên trong ẩn danh, chúng ta chỉ có thể triển khai một giao diện.

  • Với lớp học thông thường, chúng tôi có thể mở rộng một lớp học và cũng triển khai nhiều giao diện nhưng, với một lớp bên trong ẩn danh, chúng ta có thể mở rộng một lớp hoặc triển khai một giao diện nhưng không phải cả hai cùng một lúc.

  • Với ẩn danh chúng tôi không thể viết hàm tạo bởi vì lớp bên trong ẩn danh không có tên và tên của hàm tạo nên giống với tên lớp.

Trong bài viết này, chúng ta đã biết lớp bên trong ẩn danh là gì và cách chúng ta có thể tạo một lớp bên trong. chúng ta đã xem qua cú pháp của lớp bên trong ẩn danh và cách chúng ta có thể tạo một lớp ẩn danh theo 3 cách và với điều này, chúng ta sẽ kết thúc bài viết Lớp ẩn danh trong Java này. Kiểm tra của Edureka.

Có một câu hỏi? Đề cập đến nó trong Phần Bình luận của bài viết này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.