If I have a diagram with class A containing the attribute aStuff, and class A has a relationship with class B, then class B can access aStuff and contain aStuff in a new attribute called bStuff. But if class B is a parent to the two child classes class C and class D, then does that mean they also have access to bStuff, since they inherit from class B?
Basically, can aStuff be held in the B class as bStuff, and then classes C and D can inherit bStuff, essentialy gaining the value of what is held in aStuff without having to have a relationship with the A class?
Sorry about the poor wording.
In short yes.
You wouldn't need to reference the attribute of the upper classes as they are inherited anyway.
A class heirarchy can consist of classes that reference each other due to common elements.
Consider this structure for a hospital staff rosta:
Employee is the Super class - the top most one.
An employee Has common elements such as name, employee id, salary.
Employees could be one of many types, eg doctors, janitors, nurses. Each of those would have their own specific information (doctors with specialty, department assignment etc, nurses on a specific ward).
They are all employees and inherit the attributes from the employee class but have additional specifics that differentiate them which are stored in the sub classes.
To go a step further, you can split doctors into further sub classes based on their own type (Attending, Resident, Specialist etc).
There is no limit to how deep your hierarchy can go, each subclass can have as many or as few sub classes as it likes (depending how much you want to split the data up).
Note, you don't need to have multiple sub classes in a hierarchy structure. You could simply have a linear progression (A -> B -> C) I would argue that in a case like that you might not need the division, however in some cases it might be necessary