user1404924
user1404924

Reputation: 95

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.

I can use therefore a file named preferences.class and do everything I need with the following 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?

Upvotes: 0

Views: 123

Answers (1)

mprabhat
mprabhat

Reputation: 20323

You can have a PreferenceChangeListener which implements OnSharedPreferenceChangeListener and your Preference class will have a 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.

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

Upvotes: 2

Related Questions