インターフェイスで質問です。
public interface MyInterface {
  public int func(MyInterface obj);
}

これの二行目のMyInterfaceって何ですか?
定義したインターフェイスがどのクラスで使われるか分からないから、インターフェイス名を型として使えるということですか?
インターフェイスを変数の型として定義した場合、アサインするオブジェクトはインターフェイスを実装しているクラスのインスタンスでないといけませんとありました。

これと絡んでもう一つ質問です。このインターフェイスを実装しているクラスでは
public double func(MyInterface obj){
  MyClass otherObj = (MyClass)obj;
・・・}
としてから使ってるのですが、このMyClassを囲っている括弧はどういう意味があるんですか?
実装しているクラスのインスタンスなら、objのまま使ってもよさそうなんですが、これは何をしているのでしょうか。