可以使用abstract来修饰一个类或者方法。
用abstract修饰的类表示这个类是一个抽象类,用abstract修饰的方法表示这个方法是一个抽象方法。
抽象类不能被实例化。
抽象方法是只有方法声明,而没有方法的实现内容。
abstract 抽象类
可以使用abstract来修饰一个类。
用abstract修饰的类表示这个类是一个抽象类。
抽象类不能被实例化。
这是一个简单抽象的方法,如果它被直接实例化,系统会报错。
<?php //定义一个抽象类 abstract class User { public function __toString() { return get_class($this); } } //实例化这个类会出现错误 echo new User(); ?>下面例子的 NormalUser 继承自 User类,就可以被实例化了。
<?php //定义一个抽象类 abstract class User { public function __toString() { return get_class($this); } } //实例化这个类会出现错误 echo new User(); class NormalUser extends User { } $a = new NormalUser(); echo "这个类" . $a . "的实例"; ?>单独设置一个抽象类是没有意义的,只有有了抽象方法,抽象类才有了血肉。下面介绍抽象方法。
abstract 抽象方法
用abstract修饰的类表示这个方法是一个抽象方法。
抽象方法,只有方法的声明部分,没有方法体。
抽象方法没有 {} ,而采用 ; 结束。
一个类中,只要有一个抽象方法,这个类必须被声明为抽象类。
抽象方法在子类中必须被重写。
下面是一个抽象类,其中有两个抽象方法,分别是 setSal() 和 getSal()。用来取回 $sal 员工的工资。
<?php abstract class User { protected $sal = 0; //这里定义的抽象方法。 //注意抽象方法没有方法体,而且方法结束使用 ; 号。 abstract function getSal(); abstract function setSal(); //定义它的__tostring方法 public function __toString() { return get_class($this); } } ?>既然User类不能被直接继承,我们写一个NormalUser类继承自User类。当我们写成如下代码时,系统会报错。 这个错误告诉我们,在 User类中有两个抽象方法,我们必须在子类中重写这两个方法。
<?php abstract class User { protected $sal = 0; //这里定义的抽象方法。 //注意抽象方法没有方法体,而且方法结束使用 ; 号。 abstract function getSal(); abstract function setSal(); //定义它的__tostring方法 public function __toString() { return get_class($this); } } class NormalUser extends User { } ?>下面例子,重写了这两个方法,虽然方法体里面 {} 的内容是空的,也算重写了这个方法。注意看重写方法的参数名称,这里只要参数数量一致就可以,不要求参数的名称必须一致。
<?php abstract class User { protected $sal = 0; //这里定义的抽象方法。 //注意抽象方法没有方法体,而且方法结束使用;号。 abstract function getSal(); abstract function setSal(); //定义它的__tostring方法 public function __toString() { return get_class($this); } } class NormalUser extends User { function getSal() { } function setSal($sal) { } } //这样就不会出错了。 ?>下面19-21行,三种写重写的方式都会报错。
相关推荐
2. **对象(Object)**:对象是类的实例,具有类定义的属性和方法。通过`new`关键字,我们可以根据类创建新的对象。 3. **封装(Encapsulation)**:封装是将数据和操作数据的方法绑定在一起,对外部环境隐藏内部...
抽象类是一种不能被实例化的特殊类,它通常用来作为其他类的基类,提供共同的属性和方法。在PHP中,使用`abstract`关键字声明一个类为抽象类,并可以定义抽象方法(没有方法体的方法)。子类继承抽象类时,必须实现...
10. **静态成员**:在PHP中,`static`关键字可以用来声明静态属性和方法,它们不属于类的实例,而是属于类本身。这意味着无需创建对象即可访问它们。 通过学习以上知识点,你将能够更好地理解PHP中的面向对象编程,...
对象是类的具体实例,可以访问类中的属性和方法。 3. 访问控制:PHP提供了public、private和protected三种访问修饰符。public属性和方法可以在任何地方访问,private仅限于本类内部,而protected允许子类访问。 4....
首先,我们要理解**类**是对象的模板,它定义了一组属性和方法,这些属性描述了对象的状态,而方法则定义了对象的行为。在PHP中,我们可以使用`class`关键字来创建类。例如: ```php class Car { public $color; /...
5. **继承**:一个类可以继承另一个类的属性和方法,这样可以避免代码重复,提高代码的复用性。使用`extends`关键字实现继承。 6. **封装**:封装是将数据和操作数据的方法绑定在一起,形成一个独立的单元,以保护...
使用`abstract`关键字声明抽象类和方法。子类必须实现所有抽象方法才能被实例化。 **魔术方法**是PHP提供的一组特殊方法,如`__construct`(构造方法)、`__destruct`(析构方法)、`__get`和`__set`(用于访问私有...
继承允许一个类(子类)从另一个类(父类)继承属性和方法。这提高了代码的复用性并简化了设计。在PHP中,使用关键字"extends"实现继承: ```php class Student extends Person { // 子类可以访问父类的公共和受...
PHP中的`abstract`关键字用于声明抽象类和方法,`interface`关键字用于定义接口。 此外,**访问修饰符**也是PHP OOP中不可忽视的部分。`public`成员对所有类可见,`private`成员只能在定义它们的类中访问,`...
总结来说,PHP5的面向对象特性包括类、对象、继承、接口、抽象类和方法以及封装。通过这些概念,开发者可以构建出更加模块化、易于维护的代码结构。在实际开发中,理解和熟练运用这些基础概念对于提高PHP应用程序的...
- 继承允许一个类(子类)从另一个类(父类)继承属性和方法。这减少了代码重复,提高了代码的复用性。在PHP中,使用`extends`关键字实现继承。 5. **多态** - 多态性允许子类重写父类的方法,使得相同的方法名在...
6. **抽象类与抽象方法**:`abstract`关键字可以声明一个抽象类或方法,抽象类不能实例化,必须由其他类继承并实现其所有抽象方法。 7. **命名空间(Namespace)**:PHP5.3引入了命名空间,用于组织和避免全局作用...
对象是类的实例,具有类中定义的属性和方法。例如,你可以创建一个名为`Person`的类,包含`name`和`age`属性,以及`sayHello`方法。 2. 封装:这是面向对象的核心特征之一,它隐藏了对象内部的实现细节,只对外提供...
在PHP中,类是创建对象的蓝图或模板,它定义了一组属性(Variables)和方法(Functions),这些属性和方法构成了对象的行为。例如,你可以创建一个名为"Person"的类,包含姓名、年龄等属性,以及说话、走路等方法。 ...
- **对象(Object)**: 对象是类的实例,具有类所定义的属性和方法。 - **封装(Encapsulation)**: 封装是将数据和操作这些数据的方法绑定在一起,形成一个独立的实体,对外只暴露有限的接口。 - **继承...
7. 抽象类(Abstract Class)与抽象方法:抽象类不能被实例化,只能作为其他类的基类。抽象方法没有实现,必须由子类提供。 ```php abstract class AbstractClass { abstract public function someAbstractMethod...
1. 类(Class):类是创建对象的蓝图,定义了一组属性(成员变量)和方法(成员函数)。在PHP5中,我们使用`class`关键字来定义一个类,例如: ```php class MyClass { public $property; function __construct() ...
继承允许一个类(子类)从另一个类(父类)继承属性和方法,实现代码复用。使用`extends`关键字实现继承: ```php class ChildClass extends ParentClass { // 子类添加的属性和方法 } ``` **4. 多态** 多态是指...
在PHP5中,抽象类通过关键字`abstract`定义,它不能被实例化,而是作为其他类的基类。抽象方法是抽象类中的一个没有实现的方法,用`abstract`关键字声明,必须在子类中实现。这样强制要求子类必须提供具体实现,确保...