2015-08-23 31 views
0

在下面的代码中,我创建了按钮侦听器,并且当我尝试创建eclipse建议将其创建为OnClickListener或作为mainClass的一部分的方法on()何时在匿名类中创建方法

两种情况下创建方法on()的区别是什么?为什么它应该是protected

代码

private OnClickListener btnListenerOn = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     on(); 
    } 
}; 
@Override 
protected void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    Log.w(TAG, "@onStart."); 
} 

protected void on() { 
    // TODO Auto-generated method stub 

} 

回答

3

Encapsulation是应该给你在哪里放置方法的领先理念。封装可以帮助您将实施细节隐藏到最有限的范围内,例如,您可以在需要更改实施时阻止ripple effect

对你而言,既然你可能不需要从其他地方打电话on()方法,那么你的OnClickListener,这是正确的地方。

在这种情况下,on()方法应该是私人的,因为您永远不会延长匿名类别。如果您的侦听器不是匿名的,您可能需要声明该方法受保护,以便您可以覆盖子类中的实现