但是我们知道面向对象有三个主要特性:继承性、多态性和封装性。

1。继承

我们继续在最后一节,在PHP中,继承是为java一样,和延伸使用关键字。
复制代码代码如下所示:
班上的人
{
私有名称;
公共函数GetName()
{
返回$这个名称;
}
公共职能setName($name)
{
这个名字;
}
}
班级学生延伸人
{
私人等级;
公共函数SayHello()
{
回声(早上好。家长::GetName());
}
}

在这里,我们需要主和我们访问父类的C #基地,和超在java,但在PHP中,我们使用parent关键字。

如果我们想访问我们自己的方法,我们可以使用这个或自己。
复制代码代码如下所示:
班级学生延伸人
{
公共函数GetName()
{
返回生;
}
私人等级;
公共函数SayHello()
{
回声(早上好。自GetName(::));
/ /回波(早上好。美元-> GetName());
}
}

2。抽象类

说到继承,不得不说抽象类。
复制代码代码如下所示:
< PHP
抽象类的人
{
私有名称;
公共函数GetName()
{
返回$这个名称;
}
公共职能setName($name)
{
这个名字;
}
抽象函数SayHello();
}
班级学生延伸人
{
公共函数SayHello()
{
回声(早上好。家长::GetName());
}
}
新学生();
$ S -> setName(生);
SayHello()的美元->;
>

三.接口

下一个是接口:
复制代码代码如下所示:
< PHP
抽象类的人
{
私有名称;
公共函数GetName()
{
返回$这个名称;
}
公共职能setName($name)
{
这个名字;
}
Abstract function SayHello ();
}
接口伊伦
{
函数运行();
}
班的学生扩展了人们实现伊伦
{
公共函数SayHello()
{
回声(早上好。家长::GetName());
}
公共函数运行()
{
回声(两腿跑);
}
}
新学生();
$ S -> setName(生);
SayHello()的美元->;
运行();
>

这没什么好说的,就像java。

4。结构的方法

一直以来,我忘了说建造方法,实际上是相同的代码:
复制代码代码如下所示:
< PHP
班上的人
{
私有名称;
私人年龄;
公共功能人(姓名,年龄)
{
这个名字;
美元=年龄=年龄;
}
公共函数SayHello()
{
你好,我的名字是。我是;
}
}
P =新的人(Kym
P - SayHello();
>

我们经常会遇到一个异常类型的题目在面试中,即一个类的数量之间的关系,然后是调整结构调整。然而,这是没有的情况下,PHP,因为PHP构造函数链是不支持的,也就是说,当你初始化子,他不会自动调用父类的构造方法。
复制代码代码如下所示:
< PHP
班上的人
{
私有名称;
私人年龄;
公共功能人(姓名,年龄)
{
这个名字;
美元=年龄=年龄;
}
公共函数SayHello()
{
你好,我的名字是。我是;
}
}
班级学生延伸人
{
私人分数;
公共功能学生(姓名、年龄、分数)
{
这个人(姓名,年龄);
$ =;
}
公共职能介绍()
{
父:SayHello();
在这次考试中,我得到了;
}
}

$ S =新学生(生
介绍();
>

5。析构函数

析构函数不同于C和C++ #,和PHP,该析构函数的名字是__destructor()。
复制代码代码如下所示:
班级学生延伸人
{
私人分数;
公共功能学生(姓名、年龄、分数)
{
这个人(姓名,年龄);
$ =;
}
公共职能介绍()
{
父:SayHello();
在这次考试中,我得到了;
}
__destruct()函数
{
回声(我将被卸载);
}
}

6。多态性

由于存在默认参数和PHP的弱类型,编译多态性(即由参数和类型的数量引起的多态性)无法实现,但上面提到了运行时多态性。