在阅读“Hello, Android”一书时,我注意到:
onCreate(Bundle savedInstanceState)
每个带有方法的 java 文件,在程序的主 Activity 中都具有受保护的访问修饰符 EXCEPT [具有:public void onCreate(Bundle savedInstanceState)
]。
为什么onCreate
方法public
在程序的主Activity上,却protected
在其他地方?
onCeate ()受到保护,以避免从活动对象调用它。
MyActivity activity = new MyActivity();
activity.onCreate(args); // which doesn't make sense because activity is not yet created
由于仅在创建活动时调用此方法,因此您自己调用它很可能会给您一个nullpointerException,因为活动尚未创建。S/O 邮政
您可以更改方法的可见性。你不能做的是:降低可见性(将公共方法设为私有),访问私有方法(将其设为公开)
它也可以protected
。没有什么重要或明智的。
没有理由公开该方法(但这样做不会影响任何事情)。无论如何,您不应该手动调用它。
顺便说一句,Intellij IDEA 有带有 public 的 Activity 模板onCreate
。这可能是该方法在书中公开的原因。