Может кто-нибудь объяснить мне, почему java позволяет вам получать доступ к статическим методам и членам из экземпляра? Плохой пример, если у меня есть класс с именем RedShape и у него есть статический метод getColor (), который возвращает «красный», почему java позволяет вам вызывать статический метод из экземпляра RedShape? Мне кажется, что это нарушает некоторые из основных концепций языкового дизайна. По крайней мере, оно должно сопровождаться предупреждением компилятора.
Заранее спасибо.
Edit:
В частности, я спрашиваю о том, когда у вас есть что-то вроде
RedShape test = new RedShape();
test.getColor();
где getColor - статический метод класса RedShape. Это не имеет никакого смысла, так как это разрешено, и не выдает предупреждение компилятора в командной строке через javac. Я вижу, что это «категорически не рекомендуется», но было любопытно, была ли техническая или разумная причина, почему он разрешен за пределами «потому что C ++ позволяет это».