which [would be] the best implementation...?
The best answer is "it depends on the business/domain space and your design."
The University Special Council may be its own thing; a whole context of data + behavior unto itself. This is for requirements analysis to decide. Then it is a matter of how a thing is used throughout the application.
A class is data + behavior. A class is not merely "identity." If you're designing sub-classes with no overridden or specialized behavior then take a fresh look at your design.
Anything made in the real world is a compromise. How does the totality of class design best meets requirements as informed by OO design principles?
I look for the fundamental concepts and entities and make simple classes of these. From there I have flexibility for both inheritance and composition. I can design higher-level classes in different ways with the same constituent parts. Apply this idea at all levels of abstraction.
If you think more about the API, the messages, the communication you want between objects, then implementation details tend to feel less problematic.
Abstract classes are fantastic providing common logic and processes but leaving placeholders for specialized behavior. The template pattern and template methods are what I'm talking about.
In contrast, composition can help when we want to do the same thing but in substantially different ways. For example .net has "data adapters" for various databases. A "wrapper" class gives you a consistent API while the contained classes talk to the DB itself. The buzzword for the consistent interface is a facade. Indeed these data adapters are both "adapters" and "facades".
"Interfaces" (as in the keyword interface
in C# and Java) is a good way to declare specialized behavior across unrelated classes.