OOP and inheritance
We have seen how we can reuse our own code, and other people's code, by instantiating/creating objects from classes. But this whole OOP thing goes even further than that.
What if there is a class that has loads of useful functionality in it, but is not exactly what we want? Think about when we wrote the Carrier
class. It was so close to the Destroyer
class that we could have almost copy-and-pasted it. We can inherit from a class, and then further refine or add to how it works and what it does.
You might be surprised to hear that we have done this already. In fact, we have done this with every single app we have created. When we use the :
syntax, we are inheriting. You may recall this code from the MainActivity
class:
class MainActivity : AppCompatActivity() {
Here, we are inheriting from the AppCompatActivity
class all its functionality – or, more specifically, all the functionality that the designers of the class want us to have access to.
We can even override a function...