The existing answer is an excellent technical solution to the specific problem of hiding BananaHuman from intellisense. But since the OP also asks for a design change, I think it also gives a quick answer as to the question of why the existence of BananaHuman is a smell of code, and this should probably be a candidate for refactoring.
You may have heard of the abbreviation SOLID for five important design principles. BananaHuman works against two of these: the Single Responsibility Principle (SRP) and the Open / Closed Principle (OCP).
Bananas and people can share a lot of DNA, but like code, they should also evolve and probably evolve separately from each other. The same DNA cannot always be completely separated. The PSA states that the class should have only one responsibility, or - equivalently - there should be only one reason for the change. But BananaHuman will always automatically have at least two possible reasons for the change - a change in specifications for Banana or a change in specifications for Human .
Why does this apply specifically to BananaHuman , but not to all common base classes? Since the base class must represent one clearly defined concept, like any other class. So, for example, Mammal would only need to change if the functions that make up the concept of changing mammals. If a particular mammal evolved to lose its hair, this would change the class of animals, not the base class of Mammal . BananaHuman , on the other hand, is defined as “features common to both a banana and a person,” so it will always be associated with at least two, not one, concepts. Similarly, there can be several things in common between a banana and a person that have nothing to do with each other. Turning all of these into one class reduces cohesion and brings more responsibilities into one place.
OCP states that a program object (such as an interface, class, or method) should be open for extension, but closed for modification when adding or changing requirements. For example, if you added another living organism that has the same features as Banana and Human , you will need to change the name. Or, if it shares only some features, you will have to navigate through the base classes, perhaps even encounter multiple inheritance problems if this happens several times. I am sure that there are many other situations that can also lead to OCP violations.
So what should you do?
Well, if you read above and thought that the characteristic of BananaHuman was unfair, and that in fact it really corresponds to a very clearly defined concept, just like Mammal does ... renames it what it really is! That is all you need to do, and you are probably good. It doesn't matter if the long name is (although ideally concise is better, and you should make sure that the length does not mean that you mix several things together into one line of words).
If this is not the answer, then take a look at the idea of composition over inheritance. For example, if you have several living organisms that all have lungs, instead of creating the LivingOrganismWithLungs class, create the Lungs class, and every living organism with lungs contains an instance. If you can highlight common functions in your own classes, then you will get a much more pleasant solution.
If this is truly impossible (rarely, but it can happen), then BananaHuman may be the best option. To evaluate SRP and OCP problems, your decision should be assessed as a Do Not Repeat Yourself (DRY) violation.