Я хочу предоставить общие функциональные возможности для различных типов действий, таких как открытие и закрытие соединения с базой данных.Рассмотрим следующий класс:
public class DataActivity extends Activity {
private DbAdapter mDbAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//open database
mDbAdapter = new DbAdapter(this);
mDbAdapter.open();
}
@Override
protected void onDestroy() {
super.onDestroy();
//close database
mDbAdapter.close();
}
public DbAdapter getDbAdapter() {
return mDbAdapter;
}
}
Тогда я мог бы просто расширить DataActivity
и получить доступ к своим данным в классе.Однако, что, если я хотел сделать это для ListActivity
или ExpandableListActivity
?Мне нужно было бы сделать копию DataActivity
и сделать так, чтобы она расширила желаемый класс.
Это кажется действительно грязным, когда есть несколько классов с дублирующимся кодом реализации для каждого типа деятельности, к которому я хотел бы добавить это.
Редактировать Похоже, что я пытаюсьсделать вышеописанное на самом деле невозможно, так как Java спроектирован так, как нет множественного наследования.Есть несколько способов минимизировать дублирование кода, но наследование просто не работает в этом случае.