简体   繁体   English

与阶级斗争,扩展和实施

[英]struggling with class, extends and implements

I'm really struggling with classes, extend and implement. 我真的在努力学习课程,扩展和实施。

Well at android I want to create a preference screen and check the user input. 那么在android我想创建一个首选项屏幕并检查用户输入。

I can use therefore a file named preferences.class and do everything I need with the following class: 因此,我可以使用名为preferences.class的文件,并使用以下类执行我需要的所有操作:

        public class Preferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {

        @Override
protected void onCreate(Bundle savedInstanceState) {
}

      @Override
      public void onSharedPreferenceChanged(SharedPreferences sp, String key) {
    }
}

But isn't it better to split this up in different classes? 但是,将它分成不同的类别不是更好吗? and if yes how? 如果是的话怎么样?

You can have a PreferenceChangeListener which implements OnSharedPreferenceChangeListener and your Preference class will have a PrefernceChangeListener 你可以有一个PreferenceChangeListener它实现OnSharedPreferenceChangeListener和你的爱好级别将有一个PrefernceChangeListener

public class Preference extends PreferenceActivity {

   private PrefernceChangeListener prefernceChangeListener;

   public void addPreferenceChangeListener(PrefernceChangeListener prefernceChangeListener){
     this.prefernceChangeListener = prefernceChangeListener;
   }

   public PrefernceChangeListener getPrefernceChangeListener(){
     return this.prefernceChangeListener;
   }    
}

On a general note if your class has a property which can be externalized you should try to use HAS A relationship, you will use IS A relationship when your class provides functionality on top of inherited values. 一般说来,如果您的类具有可以外部化的属性,您应该尝试使用HAS A关系,当您的类在继承值之上提供功能时,您将使用IS A关系。

Most of the cases IS A can be avoided, unless your class doesnt has a meaning without inheritance favor HAS A over IS A relationship. 大多数情况是一套可避免,除非你的类犯规有没有继承赞成含义是有关系的。

Prefer composition over inheritance 更喜欢继承的组合

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM