PHP继承与多态面试指南:轻松应对相关问题,展现你的编程实力
一、继承:
继承是面向对象编程中的一种重要的特性,它允许子类继承父类的属性和方法,并可以在子类中扩展或修改父类的方法。子类可以继承父类中所有非private的属性和方法,包括public、protected和default(即没有访问控制修饰符)的属性和方法。
演示代码:
class Shape {
protected $name;
public function getName() {
return $this->name;
}
}
class Circle extends Shape {
protected $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * $this->radius ** 2;
}
}
$circle = new Circle(5);
echo $circle->getName(); // 输出:Circle
echo $circle->getArea(); // 输出:78.53981633974483
在上面的代码中,Circle类继承了Shape类的属性和方法,并定义了自己的属性和方法。Circle类中的getArea()方法覆盖了Shape类中的getName()方法,提供了计算圆面积的功能。
二、多态:
多态是面向对象编程中的另一个重要的特性,它允许子类对象可以被视为父类对象,并可以调用父类中的方法。这样,就可以使用统一的方法来处理不同类型的对象,而不需要关心对象的具体类型。
演示代码:
class Shape {
public function draw() {
echo "Drawing a shape
";
}
}
class Circle extends Shape {
public function draw() {
echo "Drawing a circle
";
}
}
class Square extends Shape {
public function draw() {
echo "Drawing a square
";
}
}
function drawShapes(array $shapes) {
foreach ($shapes as $shape) {
$shape->draw();
}
}
$shapes = [new Circle(), new Square(), new Shape()];
drawShapes($shapes);
在上面的代码中,drawShapes()函数接受一个数组作为参数,该数组中的元素可以是Shape类或其子类的对象。函数中的foreach循环会迭代数组中的每个元素,并调用该元素的draw()方法。由于Circle和Square类都继承了Shape类的draw()方法,因此该方法可以在不同的子类对象上被调用,而无需关心对象的具体类型。
继承与多
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341