2010-05-11 48 views
98

Tôi đã triển khai một lớp lồng nhau trong Java và tôi cần gọi phương thức lớp bên ngoài từ lớp bên trong.Gọi hàm lớp bên ngoài từ lớp bên trong

class Outer { 
    void show() { 
     System.out.println("outter show"); 
    } 

    class Inner{ 
     void show() { 
      System.out.println("inner show"); 
     } 
    } 
} 

Làm cách nào tôi có thể gọi phương thức Outershow?

+0

Chúng ta có thể giả sử rằng lớp bên trong của bạn giữ một thể hiện của lớp bên ngoài? – Eric

+12

@Eric: trong java, một thể hiện của một lớp bên trong không tĩnh ALWAYS giữ một thể hiện của lớp bên ngoài – newacct

+0

@Eric: điều đó luôn đúng trong một lớp bên trong Java không tĩnh! –

Trả lời

174

Bạn cần tiền tố gọi bởi lớp bên ngoài:

Outer.this.show(); 
+3

Tuyệt vời. Tôi có một theo dõi về điều này. Làm thế nào để gọi một phương thức trong lớp ngoài từ một nơi hoàn toàn khác bằng cách có một cá thể lớp bên trong. Bên trong myInner = new Outer(). New Inner(); ... ví dụ, nếu lớp bên ngoài có phương thức public getValue(). myInner.getValue() sẽ không hoạt động, myInner.Outer.getValue() cũng vậy. Tôi biết tôi có thể làm điều đó bằng cách có một phương thức getOwner trong Inner và sau đó gọi nó .. nhưng tôi có cần phương pháp đó không? thanks – momomo

+0

Nếu bên ngoài là một giao diện thì làm thế nào để gọi phương thức trừu tượng từ lớp bên trong ..? –

1

này nên làm như lừa:

Outer.Inner obj = new Outer().new Inner(); 
obj.show(); 
Các vấn đề liên quan