super在编译期决定了调用哪个父类的哪个方法避免了运行时的多态调用。
this是在运行时决定调用哪个方法
只是你的例子太不凑巧,getClass方法是个native方法注释里明确写了返回运行時的class名。
而运行时只有一个class就是this
toString方法的名称又调用了getClass方法取得所以你各种不凑巧加一起导致了这个结果。