This would be a change for 3.2 as 3.1 is in testing nearing release so probably too late to get something like this in as I'm not sure what would break. As far as I know, you cannot have an abstract class extend a non abstract class so you'd need to look at making the whole DO chain abstract (viewable data, I think Object already is). To me it makes semantic sense for it to be abstract (you don't create a DataObject, in that case you'd use ArrayData).
some of my classes, that extend DataObject (e.g. Product) have methods with exact the same content.
I want to outsource these methods in a parent class: MyDataObject.
My Product class should extend MyDataObject instead of extending DataObject directly,
but I'm not able to do that, I get the same Problem as described above. And I don't want MyDataObject to have a database table. Declaring MyDataObject abstract didn't help.
Is there another way to achieve this:
avoiding duplicate code
@annap, in that case you want to look at DataExtensions (which can be added to your data object without adding a table) or look at PHP Traits (http://addons.silverstripe.org/add-ons/simonwelsh/trait-loader)