以下に示したコードの様にJavaをKotlinで置き換えてみましたが、コメントアウトを外すとコンパイルエラーになります。

Javaの方が長いので、おそらくJava風?なKotlinのコードになってしまっているかもしれませんが、どこに原因があると思われますでしょうか?


元のJavaコード

class Super {
   static String x = "Super : x";
   String y = "Super : y";
   static void methodA() {
       System.out.println("Super : methodA()");
   }
   void methodB() {
       System.out.println("Super methodB()");
   }
}
class Sub extends Super {
   static String x = "Sub : x";
   String y = "Sub : y";
   static void methodA() {
       System.out.println("Sub : methodA()");
   }
   void methodB() {
       System.out.println("Sub : methodB()");
   }
}
class Sample {
   public static void main(String[] args) {
        Super obj = new Sub();
        System.out.println(obj.x);
        System.out.println(obj.y);
        obj.methodA();
        obj.methodB();
   }
}

Kotlinで置き換えたコード

open class Super {
     open val y: String = "Super : y"

     companion object {
          val x: String = "Super : x"

          fun methodA() {
                println("Super : methodA()")
          }
     }

     open fun methodB() {
           println("Super : methodB()")
     }
}
class Sub : Super() {
      override val y: String = "Sub : y"

      companion object {
           val x: String = "Sub : x"

           fun methodA() {
                 println("Sub : methodA()")
           }
      }

      override fun methodB() {
            println("Sub : methodB()")
      }
}
fun main(args: Array<String>) {
       val obj: Super = Sub()
       //println(obj.x)
       println(obj.y)
       //obj.methodA()
       obj.methodB()
}