Given the following classes:

```
public class Super {
    protected int x = 1;

    public Super() {
    System.out.print("Super");
    }
}

```

```
public class Duper extends Super {
    protected int y = 2;
    public Duper() {
    System.out.println(" duper");
}

```

```
public class Fly extends Super {
    private int z, y;
    public Fly() {
        this(0);
    }
    public Fly(int n) {
        z = x + y + n;
        System.out.println(" fly times " + z);
    }
    public static void main(String[] args) {
        Duper d = new Duper();
        int delta = 1;
        Fly f = new Fly(delta);
    }
}

```

What is printed when `Fly` is run?

My thought was since it created a Duper object, it would print out `duper`. Then, it goes to the Fly constructor with the int parameter. x is 1 from Super, y is 2 from Duper, n is 1 from Fly, so 1+2+1 = 4, so I thought it would print `fly times 4` as well. But it's actually

```
Super duper
Super fly times 2

```

If someone could explain that would be great!