(*** Exercice 1 ***) public class Subtyping { static class SuperCat {}; static class Cat extends SuperCat {}; static class Kitty extends Cat {}; interface ISnuggleable { Cat snuggleWith(Cat other); } class Snug1 implements ISnuggleable { public Cat snuggleWith(Cat other) { return other; } } static class SuperNyan{ private T t; public SuperNyan(T ot) { ot = t; }; } static class Nyan extends SuperNyan { public Nyan(T ot) { super(ot); }; }; static class SubNyan extends Nyan { public SubNyan(T ot) { super(ot); }; }; public static void main(String[] args) { System.out.println("Java Subtyping"); Cat c = new Cat(); } }