当前位置:首页 > PHP教程 > php面向对象 > 列表

php面向对象程序设计介绍

发布:smiling 来源: PHP粉丝网  添加日期:2023-07-06 16:26:29 浏览: 评论:0 

PHP是一种面向对象的编程语言,它允许开发者使用面向对象的编程技术来构建复杂的应用程序。下面是一些关于PHP面向对象编程的讲解:

类与对象

类是一种用于定义对象的蓝图,它描述了对象的属性和方法。对象则是类的一个实例,它具有类中定义的属性和方法。 在PHP中,使用class关键字来定义一个类,例如:

  1. <?php 
  2. class Person { 
  3.     public $name
  4.     public $age
  5.     function __construct($name$age) { 
  6.         $this->name = $name
  7.         $this->age = $age
  8.     } 
  9.     function sayHello() { 
  10.         echo "Hello, my name is " . $this->name; 
  11.     } 

上面的代码定义了一个名为Person的类,它有两个属性$name和$age,和一个构造函数__construct(),以及一个方法sayHello()。 我们可以使用new关键字来创建一个类的实例,例如:

  1. <?php 
  2. $person1 = new Person("John", 30); 

上面的代码创建了一个Person类的实例$person1,并将其属性$name设为John,属性$age设为30。 我们可以使用箭头符号->来调用对象的属性和方法,例如:

  1. <?php 
  2. echo $person1->name; // 输出 "John" 
  3. $person1->sayHello(); // 输出 "Hello, my name is John" 

访问控制

PHP提供了三种访问控制关键字来限制类的属性和方法的访问权限,它们分别是public、protected和private。

public:公共的属性和方法可以被类的实例、类的子类和其他代码访问。

protected:受保护的属性和方法可以被类的实例和类的子类访问,但不能被其他代码访问。

private:私有的属性和方法只能被类的实例访问,不能被类的子类和其他代码访问。 例如:

  1. <?php 
  2. class Person { 
  3.     public $name
  4.     protected $age
  5.     private $email
  6.     function __construct($name$age$email) { 
  7.         $this->name = $name
  8.         $this->age = $age
  9.         $this->email = $email
  10.     } 
  11.     public function sayHello() { 
  12.         echo "Hello, my name is " . $this->name; 
  13.     } 
  14.     protected function getAge() { 
  15.         return $this->age; 
  16.     } 
  17.     private function getEmail() { 
  18.         return $this->email; 
  19.     } 

上面的代码定义了一个Person类,其中$name属性是公共的,$age属性是受保护的,$email属性是私有的,sayHello()方法是公共的,getAge()方法是受保护的,getEmail()方法是私有的。

继承

继承是面向对象编程的重要概念之一,它允许我们创建一个新的类,并从一个已有的类中继承属性和方法。继承可以减少代码的重复,增强代码的可维护性和可扩展性。 在PHP中,使用extends关键字来继承一个类,例如:

  1. <?php 
  2. class Student extends Person { 
  3.     public $major
  4.     function __construct($name$age$email$major) { 
  5.         parent::__construct($name$age$email); 
  6.         $this->major = $major
  7.     } 
  8.     public function sayHello() { 
  9.         echo "Hello, my name is " . $this->name . " and I'm a student."
  10.     } 

上面的代码定义了一个Student类,它继承自Person类,并添加了一个$major属性。它还重写了sayHello()方法,以便在输出中添加学生的身份信息,在子类的构造函数中,我们可以使用parent::__construct()来调用父类的构造函数,以便初始化继承的属性。

多态

多态是面向对象编程的另一个重要概念,它允许我们使用一个基类类型的变量来引用子类对象,从而实现代码的通用性和灵活性。 在PHP中,多态可以通过类型提示和抽象类来实现。 类型提示是一种语法,它允许我们在函数或方法的参数中指定参数的类型,从而限制参数的类型,并提高代码的可读性和可维护性。例如:

  1. <?php 
  2. function sayHello(Person $person) { 
  3.     $person->sayHello(); 

上面的代码定义了一个sayHello()函数,它接受一个Person类型的参数。由于Student类继承自Person类,所以我们可以将一个Student类的实例作为参数传递给sayHello()函数。 抽象类是一种特殊的类,它不能被实例化,只能被用来继承。抽象类中可以定义抽象方法,这些方法没有具体的实现,只是用来规定子类必须实现的方法。例如:

  1. <?php 
  2. abstract class Shape { 
  3.     abstract public function area(); 
  4. class Rectangle extends Shape { 
  5.     private $width
  6.     private $height
  7.     function __construct($width$height) { 
  8.         $this->width = $width
  9.         $this->height = $height
  10.     } 
  11.     public function area() { 
  12.         return $this->width * $this->height; 
  13.     } 

上面的代码定义了一个抽象类Shape,它有一个抽象方法area()。Rectangle类继承自Shape类,并实现了area()方法。 我们可以使用多态来实现一个通用的计算面积的函数,例如:

  1. <?php 
  2. function getArea(Shape $shape) { 
  3.     return $shape->area(); 
  4. $rectangle = new Rectangle(10, 20); 
  5. echo getArea($rectangle); // 输出 "200" 

上面的代码定义了一个getArea()函数,它接受一个Shape类型的参数,并调用该参数的area()方法来计算面积,我们可以将一个Rectangle类的实例作为参数传递给getArea()函数。

Tags: php面向对象程序设计

分享到: