On Fri, Jul 13, 2012 at 11:26 PM, Era Scarecrow <rtcvb32@yahoo.com> wrote:
On Friday, 13 July 2012 at 19:08:54 UTC, Gor Gyolchanyan wrote:

If you make seed static, then Appleseed & apple will have access to Fruit but seed (by itself) won't. Other combinations faile as far as I can tell. How far you can take inner class inheritance I don't know, but it seems not that many levels.

This all won't work, because having Fruit know about Apple defeats the
whole purpose.

So why not...??

class Seed{} //same as static class in fruit


class Apple {
  class Appleseed : Seed {}
}

 Perhaps you would rather have Seed as an interface instead? It seems like I need a full detail of how everything connects together, so let's see..

 Fruit covers apple (but maybe not seed)
 Apple covers (and is a class of) fruit, but also contains a seed (or the seed pertains to Apple specifically)
 All fruits (including apple's) have seeds that do specific things, namely plant, water and grow, and perhaps produceFruit.

 If that isn't right, explain how the relationship of it all goes and a possible solution may show itself.

The seed can't be an interface because it needs to contain state. For instance the progress towards becoming the respective fruit.

The seed needs to be aware of the fruit it came from to access the fruit's DNA to inherit the traits of that fruit when it grows into a fruit of its own. (Please note, that it's just an example).

A fruit can have multiple such seeds, each of which must have it's own state and connection to the same fruit they came from.

So, we start off by inheriting from Fruit, defining the properties of that fruit (It's an Apple, it's delicious and it goes great in a pie). Then we define several different types of Apple seeds, each of which need access to the apple.

--
Bye,
Gor Gyolchanyan.