当谈到PHP中的关键字时,public、private、protected和abstract肯定是不可忽略的。在下面的攻略中,我将详细讲解这些关键字的用法,并为您提供两个示例,帮助您更好地理解它们的概念和用途。
public, private和protected
public、private和protected是用于控制类的属性和方法可见性的关键字。
public
public会使该属性或方法可以在类内部和外部被访问。这意味着,可以从类的任何地方访问该属性或方法。
class Person {
public $name = 'Bob';
public function sayHello() {
echo "Hello, I'm {$this->name}.";
}
}
$person = new Person();
echo $person->name; // 输出 Bob
$person->sayHello(); // 输出 Hello, I'm Bob.
private
private会使该属性或方法仅可在类内部访问。这意味着,无法从类的外部访问该属性或方法。
class Person {
private $name = 'Bob';
private function sayHello() {
echo "Hello, I'm {$this->name}.";
}
}
$person = new Person();
echo $person->name; // 报错,无法访问私有属性
$person->sayHello(); // 报错,无法访问私有方法
protected
protected会使该属性或方法在类内部、子类和父类中可见,但在类的外部不可见。
class Person {
protected $name = 'Bob';
protected function sayHello() {
echo "Hello, I'm {$this->name}.";
}
}
class Student extends Person {
public function intro() {
echo "My name is {$this->name}.";
}
}
$student = new Student();
echo $student->name; // 报错,无法访问受保护属性
$student->sayHello(); // 报错,无法访问受保护方法
$student->intro(); // 输出 My name is Bob.
abstract
abstract关键字用于声明抽象类或抽象方法。
抽象类
抽象类是一个不完整的类,它只定义了一些方法的签名(名称、参数、返回类型),并没有具体实现。抽象类无法直接实例化,只能被继承。
abstract class Shape {
protected $color;
public function setColor($color) {
$this->color = $color;
}
abstract public function getArea();
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * pow($this->radius, 2);
}
}
$circle = new Circle(5);
$circle->setColor('red');
echo $circle->getArea(); // 输出 78.539816339745
抽象方法
抽象方法没有具体实现,只有方法的签名。抽象方法必须声明在抽象类中,并且所有子类必须实现这些抽象方法。
abstract class Shape {
abstract public function getArea();
}
class Circle extends Shape {
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function getArea() {
return pi() * pow($this->radius, 2);
}
}
class Triangle extends Shape {
private $base;
private $height;
public function __construct($base, $height) {
$this->base = $base;
$this->height = $height;
}
public function getArea() {
return ($this->base * $this->height) / 2;
}
}
$circle = new Circle(5);
echo $circle->getArea(); // 输出 78.539816339745
$triangle = new Triangle(5, 7);
echo $triangle->getArea(); // 输出 17.5
通过以上两个示例,您现在应该理解了public、private、protected和abstract关键字在PHP中的使用方法和作用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详谈PHP中public,private,protected,abstract等关键字的用法 - Python技术站