Почему многие классы Android API не являются окончательными, даже если они явно не задокументированы для наследования?

Эффективная Java (Джошуа Блох) Пункт 17 гласит:

«Проектируйте и документируйте или наследование, или иначе запрещайте это»

Однако просто беглый взгляд на API Android показывает, что большинство классов API не являются окончательными; что нормально, если они также задокументированы для наследования (например, Просмотр из Activity ). Но есть также несколько незавершенных классов, но в документации не упоминается о наследуемости этих классов. Просто несколько произвольных примеров, чтобы проиллюстрировать мою точку зрения:

  • Классы, представляющие системные службы ( WifiManager , NotificationManager ...)
  • Служебные классы, такие как UriMatcher ].
  • Некоторые классы, зависящие от оборудования, например Camera .

Открытость и расширяемость - это философия Android, разве здесь обратное соглашение? Это означает, можно ли предположить, что все классы Android API предназначены для наследования (явно задокументированы или иным образом); если не объявлено окончательным?

5
задан curioustechizen 11 November 2011 в 08:57
поделиться