Object-Oriented Programming (O.O.P.) has been relevant in the land of programming. For this article, the two most commonly used concepts will be discussed. This article provides surface-level knowledge between the two. Java will be the programming language used.
Composition
This is a concept with a has-a relationship between classes. The code below showcases this using the Java
programming language.
class Caret { Caret() {} } class TextEditor { Caret caret; TextEditor() { caret = new Caret(); } } class RichTextEditor { Caret caret; String color; RichTextEditor(String color) { caret = new Caret(); this.color = color; } }
The code above states that the class, TextEditor
has a caret
and a color
. In other words, it is made up of the aforementioned fields.
The RichTextEditor
has a caret
and color
. It does not depend on the TextEditor
class, unlike in inheritance; which will be shown below.
Composition is like making food. The main class is the food and its ingredients are its fields/properties.
Inheritance
This is a concept with an is-a relationship between classes and is only limited to being one-to-one. The code below showcases this using the Java
programming language.
class Caret { public Caret() {} } class TextEditor { Caret caret; TextEditor() { caret = new Caret(); } } class RichTextEditor extends TextEditor { String color; RichTextEditor(String color) { super(); this.color = color; } }
The code above states that the RichTextEditor
class inherits from the TextEditor
class. Everything that in TextEditor
becomes a part of RichTextEditor
.
Now, for our food analogy, let's say that Jollibee spaghetti inherits from spaghetti. If we change spaghetti to be a carbonara, for whatever reason, then our Jollibee spaghetti would then become a Jollibee carbonara without us touching it!
Conclusion
That's it! Thank you for reading. May you have a wonderful day. Happy coding. God bless! :)
Top comments (0)