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