继承与多态
一、类的继承性
1.public:公开的,在类的内部、外部,都可以访问被public修饰的成员(属性和方法)
2.private:私有,只能在类的内部可以访问。
3.protected:受保护的,修饰的成员,只有在类内部以及继承类中使用,类外部不能使用。
4.单继承和多继承:
(1)单继承:只能从一个父类来继承功能。
(2)多继承:同时从多个父类来继承功能。
5.继承的关键字为 extends
6.parent关键字
(1)self代表当前类,parent代表父类。
(2)二者可以存在于所有方法中(成员方法和静态方法)。
(3)self用来调用本类的内容,parent用来调用父类的内容。
(4)通过方法名::来调用。
案例
二、类的多态
1.什么是类的多态:
(1)类的多态,就是类的多种形态。
(2)类的多态主要指方法重载或方法重写。
(3)方法重载:在同一类中定义两个同名的方法,PHP不支持
(4)方法重写:在子类中定义一个与父类同名的方法,就是“方法重写”
(5)方法重写的要求:a.子类中的重写的方法,要求与父类中的方法同名;b.形参个数要与父类中同 名方法形参个数一致;c.重写的方法类型,要与父类中同名方法类型一致;d.重写的方法访问权限 不能低于父类中同名方法的权限。
(6)对于重写构造方法,就比较特殊,就没有形参个数的要求。
二、抽象类与抽象方法
1.abstract 关键字修饰的类/方法就是抽象类/方法。
2.抽象类不能直接实例化,必须先继承后再实例化。常用在基础类。
3.抽象方法必须先继承后重写。
4.所有的抽象方法都必须重写,少一个都不行。
5.抽象方法权限不能是 private ,因为要先继承再重写。
案例
<?php
//学生类
class Student
{
public $name;//姓名
//学生信息
public function cls()
{
echo "18级PHP班!";
}
}
//学校类
class School extends Student
{
public $tie;//
//系别信息
public function Ties()
{
echo "软件学院:)";
}
}
$obj1 = new Student();
$obj1->cls();
echo '<br>';
$obj2 = new School();
$obj2->Ties();
输出结果