Hỏi về inner class trong java

Cho em hỏi sao sử dụng biến a ở đó lại báo lỗi ạ

cái này là inner local class nha

Mình thấy có vd này trên Tutorialpoint

public class Outerclass {
   // instance method of the outer class 
   void my_Method() {
      int num = 23;

      // method-local inner class
      class MethodInner_Demo {
         public void print() {
            System.out.println("This is method inner class "+num);	   
         }   
      } // end of inner class
	   
      // Accessing the inner class
      MethodInner_Demo inner = new MethodInner_Demo();
      inner.print();
   }
   
   public static void main(String args[]) {
      Outerclass outer = new Outerclass();
      outer.my_Method();	   	   
   }
}

Chỗ int a; bạn đặt bên trong method OutterMethod thử xem

1 Like

Xin lỗi bạn, do mình chưa xài cái này bao giờ cả, mà cũng chả biết công dụng của nó. Bạn giải thích được không? :smile:

Khi sử dụng Method-Inner Class hoặc Annonymoust Inner Class thì các biến bên ngoài các class này phải được khai báo là final khi được sử dụng bởi các Class này.
Tại sao lại thế ? Đó là do tính chất phức tạp của việc biến có thể bị thay đổi cả trong và ngoài 2 Class trên, nên việc khai báo final sẽ đỡ phức tạp hơn.

It’s basically due to the way Java manages closures.

Cái Method-Inner class này ít khi được sử dụng, phần lớn là người ta dùng Inner class và Annonymous Inner Class.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?