父类和子类之间的关系是面向对象编程的常见概念,PHP中使用 extends
关键字来实现继承。在子类中,可以使用 parent
关键字来访问父类的属性和方法。parent::
是一个特殊的关键字,通过它可以调用父类中的方法。
1. parent::关键字的基本用法
父类中的方法可以被子类继承,但子类也可能需要实现一些特殊的功能,这时需要调用父类中的方法。使用 parent::
有助于实现这个目的。下面是一个展示如何使用 parent::
关键字的例子:
class Animal {
protected $species;
public function __construct($species) {
$this->species = $species;
}
public function run() {
echo "Animal is running!\n";
}
}
class Dog extends Animal {
public function bark() {
echo "Woof!\n";
}
public function run() {
parent::run();
echo "Dog is running!\n";
}
}
$myDog = new Dog('Canine');
$myDog->bark();
$myDog->run();
在这个例子中,Dog
继承了 Animal
类,并重写了它的 run()
方法。在 Dog
类的 run()
方法中,使用 parent::run()
调用父类中的 run()
方法。这种方式可以在保留父类对代码功能的定义的同时,对方法进行增强,从而实现代码复用和扩展。
2. parent::关键字的高级应用
除了用于调用父类中的方法外,parent::
关键字还可以用于访问父类中的属性。下面是一个展示 parent::
访问父类属性的例子:
class Person {
protected $age;
public function __construct($age) {
$this->age = $age;
}
}
class Student extends Person {
public function __construct($age) {
parent::__construct($age);
}
public function displayAge() {
echo "Person's age is: " . parent::$age . "\n";
}
}
$myStudent = new Student(18);
$myStudent->displayAge();
在这个例子中,Student
继承了 Person
类,并重写了 __construct()
方法。在子类的 displayAge()
方法中,使用 parent::$age
访问了父类中的 $age
属性。
需要注意的是,在使用 parent::
访问属性时,该属性本身必须是被声明为 protected
或 public
访问级别的。如果尝试访问父类中的 private
属性,则会抛出一个 Fatal error 错误。
综上所述,parent::
关键字是面向对象编程中实现继承的一个重要工具。在适当的场合下,通过使用它,可以轻松地实现代码的复用和扩展。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP面向对象学习之parent::关键字 - Python技术站