2013-05-31 32 views
6

Tôi đã một giao diện mang tên abcchương trình được biên soạn ngay cả khi không thực hiện giao diện

public interface abc 
{ 
    void start(); 
} 

và tôi có một lớp trừu tượng tên def

public abstract class def extends Thread implements abc 
{ 
} 

Tôi tạo ra một lớp mà kéo dài def gọi ghj

public class ghj extends def 
{ 
    //it is defing all the methods of its above abstract class 
    //now it does not implement the method define in interface start(); 
} 

Vui lòng thông báo nếu lớp ghj không triển khai giao diện abc các phương thức bắt buộc thì chương trình có thể được biên dịch như thế nào?

Trả lời

14

Mặc dù bạn không trực tiếp xác định start(), bằng cách mở rộng Thread, một thực hiện start() đang được cung cấp để def và lớp con của nó, do đó việc thực hiện hợp đồng của giao diện abc.

+1

+1 Khi cả hai loại bỏ đều giống nhau :) –

+0

có và điều gì sẽ xảy ra nếu chúng ta thay đổi kiểu trả về bắt đầu nhưng vẫn mở rộng chuỗi sẽ là biên dịch lỗi thời gian – anshulkatta

+1

@anshulkatta Nếu bạn thay đổi kiểu trả về 'start()' giao diện, mã sẽ không biên dịch do các kiểu trả về không tương thích giữa hợp đồng phương thức (do giao diện đưa ra) và phương thức được cung cấp (được định nghĩa trong Thread). – Vulcan

2

Lớp học đầy đủ của bạn đã được kế thừa start() phương thức từ Thread lớp học có chữ ký giống hệt nhau. Đó là lý do tại sao trình biên dịch không tạo ra bất kỳ lỗi nào.

+0

hellooww !! nó là bắt đầu() -_- – anshulkatta

+0

@anshulkatta yeah ... đã chỉnh sửa câu trả lời của tôi –

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