Lesson 5
Expanding Your Fleet with Inheritance
Expanding Your Fleet with Inheritance

It's great to see you again! In our previous lessons, you've built a strong foundation with PHP classes. You've learned how to handle properties, methods, and visibility, taking control of your data using getters and setters. Now, we're moving forward to an important and exciting concept: inheritance.

What is Inheritance?

Inheritance is a fundamental concept in Object-Oriented Programming (OOP). It allows one class, known as the child class, to inherit properties and methods from another class, called the parent class.

Imagine you have a basic spacecraft design (the parent class) that includes general features like a hull, engine, and control system. You can then create more specific types of spacecraft (the child classes) such as shuttles or cargo ships. These child classes inherit all the general features of the basic spacecraft but can also have their own unique characteristics.

For example, while the basic Spacecraft has essential elements needed for space travel, a Shuttle might have additional features like passenger seating. This means you can use the shared features from the parent Spacecraft class in your Shuttle class, saving time and keeping your code organized and efficient.

What You'll Learn

In this lesson, you will master inheritance, a key concept in Object-Oriented Programming (OOP). Inheritance allows one class to inherit properties and methods from another class, promoting code reuse and logical organization of your code.

Here's a quick overview:

  • Understanding the Basics of Inheritance: You'll learn how one class can inherit features from another class.
  • Creating Subclasses: You'll see how to create subclasses that extend the functionality of existing classes.
  • Using the parent Keyword: You'll understand how to call parent class methods and properties in the subclass.

Let's look at a practical example. Imagine you have a Spacecraft class and you want to create a more specific type of spacecraft, a Shuttle.

php
1<?php 2class Spacecraft { 3 public $name; 4 5 public function __construct($name) { 6 $this->name = $name; 7 } 8} 9?>

Now, let's create a Shuttle class that inherits from Spacecraft:

php
1<?php 2// Creating Shuttle class that inherits from Spacecraft 3class Shuttle extends Spacecraft { 4 public $passengerCapacity; 5 6 // Using parent constructor to initialize name property 7 public function __construct($name, $passengerCapacity) { 8 parent::__construct($name); 9 $this->passengerCapacity = $passengerCapacity; 10 } 11} 12 13$atlantis = new Shuttle("Atlantis", 7); 14echo $atlantis->name . " with capacity of " . $atlantis->passengerCapacity; 15?>

In this example, the Shuttle class inherits the name property and constructor from the Spacecraft class. We also added a new property, passengerCapacity, specific to the Shuttle class.

Why It Matters

Understanding inheritance is essential for writing clean, efficient, and maintainable code. Here’s why it’s important:

  • Code Reusability: By inheriting from a parent class, you can reuse existing code rather than rewrite it. This makes your codebase simpler and reduces the chance of errors.
  • Organized Code Structure: Inheritance helps you create a logical hierarchy within your code. This makes it easier to manage and maintain your growing codebase.
  • Enhanced Functionality: Subclasses can add more specific functionality while still keeping the general behavior of the parent class.

Think of inheritance as a way to build a fleet of different spacecraft with shared functionality. You can create various types of spacecraft with unique features while keeping the common properties and methods in a parent Spacecraft class.

By the end of this lesson, you'll be able to design your classes more effectively and create complex applications with a well-organized code structure.

Ready to expand your fleet? Let's dive into the practice section and start coding!

Enjoy this lesson? Now it's time to practice with Cosmo!
Practice is how you turn knowledge into actual skills.