最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • PHP 对象导向编程进阶:理解多态和继承

    面向对象编程中,多态性允许对象以不同的方式响应相同方法调用,而继承性允许子类继承和扩展父类功能。多态性表现为不同类型对象对同一方法的差异化响应,如动物类、狗类和猫类对象的 speak() 方法。继承性则体现在子类从父类继承数据和方法,如员工类从人类类继承姓名和年龄,并新增工资属性。在实际案例中,猕猴桃类继承水果类的水果名称,而跑车类通过多态性重写父类中的 gettype() 方法,实现了对汽车类中相同方法的不同响应,分别返回“汽车”和“跑车”的类型信息。

    PHP 对象导向编程进阶:理解多态和继承

    PHP 对象导向编程进阶:理解多态和继承

    概述

    多态和继承是面向对象编程 (OOP) 的两个基本概念。多态允许对象以不同的方式响应相同的方法调用,而继承允许创建新类,它们继承并扩展现有类的功能。

    多态

    多态允许对象根据其类型执行不同的操作。

    class Animal {
        public function speak() {
            echo "Animal speaksn";
        }
    }
    
    class Dog extends Animal {
        public function speak() {
            echo "Dog barksn";
        }
    }
    
    class Cat extends Animal {
        public function speak() {
            echo "Cat meowsn";
        }
    }
    
    $dog = new Dog();
    $dog->speak();  // 输出:Dog barks
    
    $cat = new Cat();
    $cat->speak();  // 输出:Cat meows

    继承

    继承允许创建新类(子类),这些类从现有类(父类)继承数据和方法。

    class Person {
        protected $name;
        protected $age;
    
        public function __construct($name, $age) {
            $this->name = $name;
            $this->age = $age;
        }
    
        public function getName() {
            return $this->name;
        }
    }
    
    class Employee extends Person {
        private $salary;
    
        public function __construct($name, $age, $salary) {
            parent::__construct($name, $age);  // 调用父类构造函数
            $this->salary = $salary;
        }
    
        public function getSalary() {
            return $this->salary;
        }
    }
    
    $employee = new Employee("John Doe", 30, 50000);
    echo "Employee name: " . $employee->getName() . "n";
    echo "Employee salary: " . $employee->getSalary() . "n";

    实战案例

    水果类和猕猴桃类(继承)

    class Fruit {
        protected $name;
    
        public function __construct($name) {
            $this->name = $name;
        }
    
        public function getName() {
            return $this->name;
        }
    }
    
    class Kiwi extends Fruit {
        public function __construct() {
            parent::__construct("Kiwi");
        }
    }
    
    $kiwi = new Kiwi();
    echo "Fruit name: " . $kiwi->getName() . "n";

    汽车类和跑车类(多态)

    class Car {
        protected $make;
        protected $model;
    
        public function __construct($make, $model) {
            $this->make = $make;
            $this->model = $model;
        }
    
        public function getType() {
            return "Car";
        }
    }
    
    class SportsCar extends Car {
        public function getType() {
            return "Sports Car";
        }
    }
    
    $car = new Car("Toyota", "Camry");
    $sportsCar = new SportsCar("Ferrari", "F430");
    
    echo "Car type: " . $car->getType() . "n";
    echo "Sports car type: " . $sportsCar->getType() . "n";
    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » PHP 对象导向编程进阶:理解多态和继承
    • 20会员总数(位)
    • 16171资源总数(个)
    • 1195本周发布(个)
    • 0 今日发布(个)
    • 115稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情