public class Hoge1
{
  public String toString()
  {
    return "Hoge1";
  }
}

public class Hoge2 extends Hoge1
{
  public String toString()
  {
    return "Hoge2";
  }
}

public class Main
{
  public static void main(String[] args)
  {
    Hoge1 hoge = new Hoge1();
    System.out.println(hoge.toString());
  }
}

やりたいこと
実行結果を"Hoge2"にしたい。

Hoge1 hoge = new Hoge1(); の部分を書き換えずに
Hoge1 hoge = new Hoge2(); に書き換えた動作をさせたい。