一、面向对象与面向过程的区别1.1 面向对象面向对象编程(OOP)是一种将数据及其操作封装在一起的编程范式。它将现实世界中的实体抽象为对象,每个对象都有自己的属性和方法。属性:表示对象的状态。方法:表...
面向对象编程(OOP)是一种将数据及其操作封装在一起的编程范式。它将现实世界中的实体抽象为对象,每个对象都有自己的属性和方法。
面向过程编程是一种以过程为中心的编程范式,将程序分解为一系列的步骤或函数。
封装是指将对象的属性和方法绑定在一起,隐藏对象的内部实现细节,只暴露必要的方法和属性。
class User { private $name; private $email; public function setName($name) { $this->name = $name; } public function getEmail() { return $this->email; }
}继承允许一个类继承另一个类的属性和方法。
class Employee extends User { public $department; public function setDepartment($department) { $this->department = $department; }
}多态允许不同的对象对同一消息做出不同的响应。
interface Animal { public function makeSound();
}
class Dog implements Animal { public function makeSound() { echo "Woof!"; }
}
class Cat implements Animal { public function makeSound() { echo "Meow!"; }
}构造函数在创建对象时自动调用,用于初始化对象的属性。
class User { private $name; public function __construct($name) { $this->name = $name; }
}析构函数在对象销毁时自动调用,用于清理资源。
class User { private $name; public function __construct($name) { $this->name = $name; } public function __destruct() { // 清理资源 }
}局部作用域是指在函数内部声明的变量。
function test() { $x = 10; // 局部作用域
}全局作用域是指在函数外部声明的变量。
$x = 10; // 全局作用域
function test() { echo $x; // 输出10
}__construct() 和 __destruct()前面已经介绍过这两个魔术方法。
__get() 和 __set()用于获取和设置私有属性的值。
class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; }
}__toString()用于将对象转换为字符串。
class User { private $name; public function __toString() { return "Name: " . $this->name; }
}克隆一个对象可以使用 clone 关键字。
class User { private $name; public function __construct($name) { $this->name = $name; }
}
$user1 = new User("John");
$user2 = clone $user1; // $user2 和 $user1 是两个独立的对象this、self 和 parent 的区别this指向当前对象。
class User { private $name; public function setName($name) { $this->name = $name; }
}self与 this 类似,但只能用于静态方法。
class User { private $name; public static function setName($name) { self::$name = $name; }
}parent用于访问父类的属性和方法。
class Employee extends User { public function __construct($name, $department) { parent::__construct($name); $this->department = $department; }
}抽象类是至少有一个抽象方法的类。
abstract class Animal { abstract public function makeSound();
}接口是一系列方法的集合,没有属性和方法实现。
interface Animal { public function makeSound();
}this、self 和 parent 的区别是什么?以上是关于PHP面向对象的面试常考知识点,希望对您有所帮助!