onCreate не является публичным, потому что вам не нужен случайный класс в совершенно другом пакете, создающем действие.
Если я создаю класс Activity в пакете com.abccompany.activity, а один из моих коллег создает класс синтаксического анализа данных JSON в пакете com.abccompany.jsonparser, я не хочу, чтобы он создавалмоя деятельность и отображение его данных JSON, когда он хочет.
onCreate не является частным, поскольку вы хотите создать подкласс Activity, а затем использовать метод super Activity onCreate для подкласса.
Фактически каждое проектирование, которое вы разрабатываете, расширяет android.app.Activity, поэтому, если onCreate был закрытым для этого суперкласса, вы вообще не сможете вызывать onCreate.