public interface SaicoroIF {
public int nageru(); }

public class Chouhan implements SaicoroIF {
int[] deme = new int[] { 3, 4, 2, 1, 5, 6 };
int jj = 0;
public int nageru() {
jj++;
if (jj == 6)
jj = 0;
return deme[jj]; }
}
public class Yogozansuka {
public static void main(String[] args) {
Yogozansuka syoubu = new Yogozansuka();
syoubu.nageru1(new Chouhan()); }
public void nageru1(SaicoroIF saicoro) {
for (int i = 0; i < 6; i++) {
System.out.println(saicoro.nageru()); } } }

こういう3つのファイルがあってYogozansukaを実行すると動くのですけど、
syoubu.nageru1(new chouhan());とpublic void nageru1(SaicoroIF saicoro)
の関連がしっくりと理解できません。
Chouhanwoをオブジェクト化して、nageru1に渡していると思うのですけど、
nageru1では引数がSaicoroIFというインターフェイスになっています。
連動がイメージできないのですけど、教えてください。java6日目です。