2013-03-22 51 views
5

Tôi có lớp ngoài. Tôi cũng có một lớp bên trong riêng tư mở rộng JPanel. Đây là thiết kế của mã.truy cập phương thức lớp học bên trong java

public class Outer{ 
    private class Inner extends JPanel{ 
     public void doSomeWork(){} 
    } 

    public Outer(){ 
     Inner inner = new Inner(); 
     inner.doSomeWork(); 
    } 

    public static void main(String args[]){ 
     Outer outer = new Outer(); 
    } 
} 

Tôi không thể truy cập phương thức doSomeWork() của lớp bên trong từ lớp bên ngoài. Hãy giúp tôi.

+1

gì bạn có nghĩa là bạn không thể truy cập phương pháp này? Bạn có thấy thông báo lỗi trình biên dịch không? Nếu có, vui lòng đăng nó ở đây trong câu hỏi của bạn. –

+3

[Điều này biên dịch tốt] (http://ideone.com/G9SCSB). – dasblinkenlight

+2

Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); inner.doSomeWork(); – chuthan20

Trả lời

12

Đây là cách bạn làm cho một đối tượng của nội tâm và truy cập các biến của nó ...

Outer outer = new Outer(); 
Outer.Inner inner = outer.new Inner(); 
inner.doSomeWork(); 

Example code from Oracle is here...

+0

Mã này không hoạt động, lớp bên trong là riêng tư, vì vậy bất kỳ mã ứng dụng khách nào cũng sẽ không thể truy cập được. Nhưng tôi không nghĩ đây là câu hỏi của OP, vì anh ta dường như đang cố gắng truy cập vào lớp bên trong từ lớp bên ngoài, không phải bên ngoài. – jedyobidan

+0

Bạn có thể nói điều này như thế nào? Tôi đã cố gắng bằng cách chỉ cần loại bỏ JPanel nó đang làm việc tốt. –

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