2013-06-02 30 views
7

thế nào là mã này làm việc tôi đang hoàn toàn bối rối ....Làm cách nào để tạo đối tượng giao diện trong java?

package com.servletpack.examples; 

interface check { 
    public void message(); 
} 
public class Interface { 
    public static void main(String[] args) { 
     try { 
      check t = new check() {//how???????????????? 
       public void message() { 
        System.out.println("Method defined in the interface"); 
       } 
      }; 
      t.message(); 
     } catch (Exception ex) { 
      System.out.println("" + ex.getMessage()); 
     } 
    } 
} 
+2

Bạn đã thử [googling] (https://www.google.co.il/search?q=How+can+we+create+object+of+interface+in+java%3F&rlz=1C1CHEU_iwIL474IL474&oq=How+ có thể + chúng ta + tạo + đối tượng + của + giao diện + trong + java% 3F & aqs = chrome.0.57j60l2j0l3.802j0 & sourceid = chrome & ie = UTF-8)? – BobTheBuilder

+0

Bạn đã thử tìm kiếm những thứ trên google và xem các nguyên tắc cơ bản của JAVA chưa? truy cập vào liên kết này http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html –

Trả lời

18

Với cú pháp đó, bạn tạo một anonymous class, hoàn toàn hợp pháp.

Nội bộ, các lớp ẩn danh được biên soạn thành một lớp riêng của chúng, được gọi là EnclosingClass$n trong đó tên của lớp kèm theo đứng trước ký hiệu $. và tăng n cho mỗi lớp ẩn danh bổ sung. Điều này có nghĩa rằng các lớp sau đây được tạo ra:

class Interface$1 implements check { 
    public void message() { 
     System.out.println("Method defined in the interface"); 
    } 
} 

Sau đó, các mã trong main biên dịch để nội bộ sử dụng lớp nặc danh mới định nghĩa:

check t = new Interface$1(); 
t.message(); 
+0

Điều gì xảy ra nếu Giao diện $ 1 là một lớp trừu tượng? –

+1

@RamaKrishna Các lớp ẩn danh không thể trừu tượng. Nếu giao diện 'check' thay vào đó là một lớp trừu tượng, việc thực hiện ẩn danh sẽ tương tự được đặt tên là' Giao diện $ 1'. – Vulcan

5

Bạn đang tạo một thể hiện (on the fly) của anonymous class mà thực hiện việc kiểm tra giao diện.

2

tham khảo giao diện của bạn có thể giữ các đối tượng của triển khai lớp học. Bạn đang thực hiện một lớp ẩn danh và gán nó cho tham chiếu giao diện, điều này hoàn toàn hợp pháp trong JAVA.

2

Đây là lớp ẩn danh. Của bạn kiểm tra lớp là một giao diện. Lớp ẩn danh định nghĩa việc triển khai giao diện đã cho khi đang di chuyển. Vì vậy, nó giúp bạn tiết kiệm từ việc tạo ra một lớp riêng biệt để thực hiện Giao diện. Cách tiếp cận này chỉ hữu ích khi bạn biết bạn sẽ không bao giờ yêu cầu triển khai này bất kỳ nơi nào khác trong mã.

Hy vọng giải thích này sẽ giúp !!

Các vấn đề liên quan