Post by account_disabled on Dec 6, 2023 3:28:03 GMT -5
Unfortunately in the Electric Duck class this is no longer true the method will not throw an exception only if we call the insertBatteries method first. The code using such an object may not even know about it because such a method does not exist in the Duck! class at all. As you can see due to the easy possibility of breaking the rules correct inheritance in Java is not easy to perform. What's worse the compiler will not always detect that this has happened which means we have to verify the code manually and therefore unreliably.
What options do we have to solve the problem? Pure abstraction The first method we could use is to modify the existing class hierarchy so that the classes representing concrete entities in our case a living duck and an electric duck inherit from an abstract class to which we transfer as much common code Email Marketing List as possible. Someone may ask What does this actually mean if we still stick to inheritance and the electric duck will still behave differently than a live one? Well the catch of this solution is that it will not be possible to say that the inheriting class spoils the behavior of the base class because the objects of the base class.
Simply will not exist after all it is abstract! And if they don't exist there won't be anything to spoil. Simple isn't it? Of course objectoriented programming purists will probably say that such a translation is farfetched. But it's not mathematics there is no one right solution here. One may have reservations about other disadvantages of this approach but we will talk about them later. So let's show our code in action! Let's start with an abstract class to which we will move the common code. We will call it in a less sublime way Base Duck.
What options do we have to solve the problem? Pure abstraction The first method we could use is to modify the existing class hierarchy so that the classes representing concrete entities in our case a living duck and an electric duck inherit from an abstract class to which we transfer as much common code Email Marketing List as possible. Someone may ask What does this actually mean if we still stick to inheritance and the electric duck will still behave differently than a live one? Well the catch of this solution is that it will not be possible to say that the inheriting class spoils the behavior of the base class because the objects of the base class.
Simply will not exist after all it is abstract! And if they don't exist there won't be anything to spoil. Simple isn't it? Of course objectoriented programming purists will probably say that such a translation is farfetched. But it's not mathematics there is no one right solution here. One may have reservations about other disadvantages of this approach but we will talk about them later. So let's show our code in action! Let's start with an abstract class to which we will move the common code. We will call it in a less sublime way Base Duck.