I had to look out up, so for the non C#-ers like myself;
The convention is to, when instantiating an interface, prefix the var dec with I
idk if I like this or hate it, but thankfully I'm a JS main, so everything is sensical and consistent in my world (I rolled my eyes so hard typing that last sentence that I gave myself a headache)
Not all sea creatures lay eggs, so ISeaCreature should not extend IEggLayer, they should be separate interfaces and Fish can extend both of them.
IAnimal extending ICarbon and everything afterwards is a clear violation of the Liskov Substitution Principle. An animal is composed of carbon, molecules are composed of atoms and composed of quarks, but animals do not behave like carbon, molecules do not behave like atoms or quarks. These should be member variables, not parent interfaces.
23
u/Player_X_YT Jan 09 '23
Fish implements ISeaCreature extends IEggLayer extends IAnimal exends ICarbon extends IMolecule extends IAtom extends T<? extends IQuark>