Добрый день! Возник вопрос, связанный с использованием ключевого слова this в примере из книги Брюса Эккеля "Thinking in Java". Пример соответствует главе про Generics, однако вопрос связан именно с использованием this. Видимо, я немного упустил про это. Пример следующий:
import java.util.*;
public class IterableFibonacci extends Fibonacci implements Iterable<Integer> {
 private int n;
 public IterableFibonacci(int count) { n = count; }
 public Iterator<Integer> iterator() {
    return new Iterator<Integer>() {
      public boolean hasNext() { return n > 0; }
      public Integer next() {
       n--;
       return IterableFibonacci.this.next();
      }
      public void remove() {
        // Not implemented
        throw new UnsupportedOperationException();
      }
    };
  }
  public static void main(String[] args) {
   for(int i : new IterableFibonacci(18))
    System.out.print(i + " ");
  }
}
Fibonacci:
import net.mindview.util.*;
public class Fibonacci implements Generator<Integer> {
  private int count = 0;
  public Integer next() {
    return fib(count++);
  }
  private int fib(int n) {
    if(n < 2)
     return 1;
    return fib(n-2) + fib(n-1);
  }
  public static void main(String[] args) {
   Fibonacci gen = new Fibonacci();
   for(int i = 0; i < 18; i++)
    System.out.print(gen.next() + " ");
  }
}
Generator:
package net.mindview.util;
public interface Generator<T> { T next(); }
Так вот, мне не совсем понятно, как работает вот эта строчка: return IterableFibonacci.this.next(); а именно ключевое слово this в ней. Я, конечно, понимаю, что она вызывает метод next() из Fibonacci, но почему и каким образом? Если поможете разобраться или посоветуете какой-нибудь ресурс, где можно почитать о подобном, буду вам сильно благодарен! Спасибо!