Object

Javaでは、すべてのクラスが、Objectクラスを継承している。

Object (Java Platform SE 6)

独自にCustomObjectクラスを定義する。

中身は何も定義しなくても、Objectを継承する。
MainClass.javaでは、

StringはObjectを継承してるので、アップキャスト問題なし。
CustomObjectもObjectを継承してるので、アップキャスト問題なし。
ObjectはtoStringメソッドを持っているので、どちらも呼び出せる。

str = ABC
obj = ABC
custom.toString() = CustomObject@15136019
obj2.toString() = CustomObject@15136019

中身は同じ。

Sample/java/Object/Object/src/Object at master · bg1bgst333/Sample · GitHub