PHP8的继承和多态-PHP8知识详解

导读:我们在前面的时候讲过《面向对象编程的特点》时,面向对象编程具有3大特点:封装性、继承性和多态性。 集成和多态的根本作用就是完成代码的重用。下面就来讲解PHP8的继承和多态。

我们在前面的时候讲过《面向对象编程的特点》时,面向对象编程具有3大特点:封装性、继承性和多态性。

继承和多态的根本作用就是完成代码的重用。下面就来讲解PHP8的继承和多态。


1继承

子类可以继承父类的所有成员变量成员方法,包括构造方法。当子类被创建时, PHP 会先在子类中查找构造方法。如果子类中有自己的构造方法,则PHP会先调用子类中的方法。如果子类中没有自己的构造方法,则 PHP会调用父类中的构造方法,这就是继承。

继承(Inheritance)是OOP 中最为重要的特性与概念。父类拥有其子类的公共属性和方法。子类除了拥有父类具有的公共属性和方法外,还拥有自己独有的属性和方法。

PHP 使用关键字 extends 来确认子类和父类,实现子类对父类的继承。具体的语法格式如下:

class 子类名称 extends 父类名称{
  //子类成员变量列表
  function 成员方法(){ //子类成员方法
    //方法内容
  }
}

 继承类的变量,参考案例:

<?php
    class Language {
        var $f1 = "html";                            //定义变量
        var $f2 = "javascript";
    };
    class MyLanguage extends Language {               //类之间继承
        var $f3 = "php";                            //定义子类的变量
        var $f4 = "mysql";
    };
    $myLanguage = new MyLanguage ();                 //实例化对象
    echo "目前热门的web开发语言有:".$myLanguage ->f1.",".$myLanguage ->f2.",".$myLanguage ->f3." ,".$myLanguage->f4;
?>

以上代码在php8中的运行结果是:

目前热门的web开发语言有:html,javascript,php ,mysql

从结果中可以看出,本案例创建了一个Language父类,子类通过关键字extends继承了Language父类中的成员属性,最后对子类进行实例化操作。

2、多态

多态性是指同一操作作用于不同类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。

多态就像有一个成员方法从广州去北京,这时候有人做开汽车去,有人做高铁去,也有人做飞机去。虽然是同一个成员方法,但是却产生了不同的形态,这就是多态。

今天我就以一个今日特价水果的案例来实现类的多态:

<?php
    abstract class Fruit {                                 //定义抽象类Fruit
        abstract function display_Fruit();                //定义抽象方法 display_Fruit
    }
class Fruit1 extends Fruit{                             //继承父类Fruit
        public function display_Fruit (){                 //重写抽象方法 display_Cars
            echo "今日特价水果是苹果!" ;            //输出信息
        }
    }
    class Fruit2 extends Fruit{                        //继承父类Cars
        public function display_Fruit(){                // display_Cars
            echo "今日特价水果是葡萄!" ;
        }
    }
    function change($obj){                            //自定义方法根据对象调用不同的方法
        if($obj instanceof Fruit){
            $obj->display_Fruit ();
        }else{
            echo "传入的参数不是一个对象";           //输出信息
        }
    }
    echo "实例化Fruit1:";
    change(new Fruit1());                          //实例化Fruit1
    echo "<br>";
    echo "实例化Fruit2:";
    change(new Fruit2());                         //实例化Fruit2
?>

以上代码在PHP8中的运行结果如下:

实例化Fruit1:今日特价水果是苹果!
实例化Fruit2:今日特价水果是葡萄!

好了,到此为止,PHP8的继承和多态就讲解完毕了。

本文地址:https://www.566155.com/68.html

猜你喜欢

PHP8的继承和多态-PHP8知识详解

导读:我们在前面的时候讲过《面向对象编程的特点》时,面向对象编程具有3大特点:封装性、继承性和多态性。 集成和多态的根本作用就是完成代码的重用。下面就来讲解PHP8的继承和多态。

2023-09-27  分类:PHP  浏览:585次


PHP8中伪变量“$this->”和操作符“::”的使用-PHP8知识详解

导读:对象不仅可以调用自己的变量和方法,也可以调用类中的变量和方法。php8通过伪变量“$this->”和操作符“::”来实现这些功能。

2023-09-27  分类:PHP  浏览:379次


PHP8中的构造方法和析构方法-PHP8知识详解

导读:今日分享的内容是PHP8中的构造方法和析构方法,我们把构造方法和析构方法这两个方法分开来讲:

2023-09-27  分类:PHP  浏览:263次


PHP8的类与对象的基本操作之类常量-PHP8知识详解

导读:PHP 8引入了一种新的特性,称为类常量(Class Constants)。类常量是在类中定义的常量,类似于全局常量,但作用域仅限于定义它们的类。 在PHP 8中,类常量的作用域被限制在定义它们的类中。这意味着只有类的成员方法或静态方法才能访问类常量。在其他上下文中,如类的实例方法或全局范围内,类常量将不可见。

2023-09-27  分类:PHP  浏览:279次


PHP8的类与对象的基本操作之成员变量-PHP8知识详解

导读:成员变量是指在类中定义的变量。在类中可以声明多个变量,所以对象中可以存在多个成员变量,每个变量将存储不同的对象属性信息。

2023-09-27  分类:PHP  浏览:250次


PHP8的类与对象的基本操作之类的实例化-PHP8知识详解

导读:定义完类和方法后,并不是真正创建一个对象。类和对象可以描述为如下关系。类用来描述具有相同数据结构和特征的“一组对象”,“类”是“对象”的抽象,而“对象”是“类”的具体实例,即一个类中的对象具有相同的“型”,但其中每个对象却具有各不相同的“值”。

2023-09-27  分类:PHP  浏览:264次


PHP8的类与对象的基本操作之成员方法-PHP8知识详解

导读:成员方法是指在类中声明的函数。在类中可以声明多个函数,所以对象中可以存在多个成员方法。类的成员方法可以通过关键字进行修饰,从而控制成员方法的商用权限。

2023-09-27  分类:PHP  浏览:275次


PHP8的类与对象的基本操作之定义类-PHP8知识详解

导读:在PHP8中,定义类的关键字是class,定义类的语法格式如下: 其中,修饰符是可选项,常见的修饰符包括public、private和protected。

2023-09-27  分类:PHP  浏览:273次


认识面向对象-PHP8知识详解

导读:面向对象编程,也叫面向对象程序设计,是在面向过程程序设计的基础上发展而来的,它比面向过程编程具有更强的灵活性和扩展性。 它用类、对象、关系、属性等一系列东西来提高编程的效率,其主要的特性是可封装性、可继承性和多态性。

2023-09-27  分类:PHP  浏览:254次


PHP8中调换数组中的键值和元素值-PHP8知识详解

导读:在PHP8中使用array_flip()函数可以调换数组中的键值和元素值。

2023-09-27  分类:PHP  浏览:252次