If I'm supposed to try to encapsulate data as much as possible how can I share data without making everything public if I can't inherit? I'm working on a WPF project right now, but I think this is a problem that would come up in any other time when I can't inherit the data I need (mostly in my experience because I would have to inherit from more than one base class, although maybe there are other times). I keep reading that I should do interfaces to share stuff when I can't inherit, but afaik interfaces only share behavior...not data itself...I can imagine there are ways to share data indirectly through shared behavior but I don't know if I should do it that way or how to do that...