это называется тернарный оператор, если выражение до "?" истинно, то возвращается то что между "?" и ":", иначе - то что после ":"
в отличие от оператора if результат именно возвращается, а не только выполняется
и работа с классами тут совершенно не причем