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)