1. 继承:代码复用的利器
继承允许类共享其他类的方法和属性,从而实现代码复用。基本语法如下:
class ChildClass extends ParentClass {
// 子类特有方法和属性
}
例如,Animal
类具有name
和age
属性,以及eat()
和sleep()
方法。Dog
类继承Animal
类后,可以直接使用后者的方法和属性,无需重新定义。
class Animal {
public $name;
public $age;
public function eat() {
echo "{$this->name} is eating.
";
}
public function sleep() {
echo "{$this->name} is sleeping.
";
}
}
class Dog extends Animal {
public $breed;
public function bark() {
echo "{$this->name} is barking.
";
}
}
$dog = new Dog();
$dog->name = "Buddy";
$dog->age = 3;
$dog->breed = "Golden Retriever";
$dog->eat(); //输出:Buddy is eating.
$dog->sleep(); //输出:Buddy is sleeping.
$dog->bark(); //输出:Buddy is barking.
2. 多态:让代码更灵活
多态是指子类可以重写父类的方法,但仍然保留父类方法的名称和参数。由于重写后的方法具有相同的方法名和参数列表,因此变量可以指向父类或子类对象,并以不同的方式调用相同的方法。
例如,Animal
类具有speak()
方法。Dog
类继承Animal
类后,重写了speak()
方法,以输出它特有的叫声。
class Animal {
public function speak() {
echo "Animal is speaking.
";
}
}
class Dog extends Animal {
public function speak() {
echo "Dog is barking.
";
}
}
$animal = new Animal();
$animal->speak(); //输出:Animal is speaking.
$dog = new Dog();
$dog->speak(); //输出:Dog is barking.
$animals = [$animal, $dog];
foreach ($animals as $animal) {
$animal->speak(); //根据实际对象类型输出不同结果
}
3. 继承与多态的结合:面向对象编程的精髓
继承和多态是相互关联的。继承允许类共享父类的方法和属性;多态允许子类重写父类的方法,以自定义行为。两者结合,可以创建可扩展、可重用且易于维护的代码。
例如,一个应用程序需要处理不同类型的动物。我们可以创建一个Animal
类,包含所有动物共有的方法和属性。然后,我们可以创建Dog
、Cat
等子类,并根据实际情况重写speak()
方法。这样,我们在处理不同类型的动物时,只需使用相同的代码,就能轻松实现不同的行为。
继承和多态是面向对象编程的核心概念,理解并掌握它们可以大大提升编程效率和代码美观度。