1-4(OOP)PHP类的继承

继承 inherit [ɪnˈherɪt]: 在定义某个类的时候,可以指定这个类,根据程序中已经存在的某个类派生而来

 

比如新创建的Student类就继承了Humanity这个类

Student 称作是Humanity的子类, Humanity是 Student的父类

子类继承了父类的属性和方法, 就相当于子类中有和父类一样的属性和方法

子类可以再定义属于自己的属性和方法、类常量

class Humanity{
	public $name;
	public $sex;
	public $iq=10;
	const BIRTHPLACE='地球';
}

class Student extends Humanity{
	public $studentId;
	public function test($subject){
		echo "{$this->name}正在考{$subject}!";
	}
}

$hanMM=new Student('韩梅梅','女');
$hanMM->eat('苹果');
$hanMM->test('数学');

Annotation:

Times of inherit is not restrictive, also they can have the same father class. 

 

想改父类的方法不能在父类的代码里改,而是用方法重写

方法重写:在子类里面包含和父类同名的方法

重写的方法的参数必须和父类中对应方法的参数一致,构造方法出外部

如果不希望父类中的某些方法被子类重写,在父类定义前加上final表示该类不能被继承,

属性不能定义为final,只有类和方法才能定义为final (不建议在类前面加final,因为继承是面向对象常用的手段)

<?php
/* Created by PhpStorm
 * @author: ROBIN.FANG
 * @Date: 2020/6/23 Time: 12:40
 */

header('Content-Type:text/html;charset=utf-8');
class Humanity{
    public $name;
    public $sex;
    public $iq=10;
    const BIRTHPLACE='地球';
    //Constructor Function
    public function __construct($name,$sex){
        $this->name=$name;
        $this->sex=$sex;
    }
    //方法前面加上final,这个方法就不能被子类重写
    public function eat($food){
        echo "<p>{$this->name}正在吃{$food}</p>";
    }
}

class Student extends Humanity{
    public $studentId;
    public function test($subject){
        echo "<p>{$this->name}正在考{$subject}</p>";
    }
    //方法重写,相当于在当前这个子类里面覆盖了父类的某个方法!
    //参数的个数要和父类一致,构造函数的参数个数无需和父类里面的构造函数的参数个数一致
    public function eat($food){
        echo "<p>{$this->name}正在快速地吃{$food}!</p>";
    }
}
class Worker extends Humanity{

}

class ClassLeader extends Student{
    public function manage($arg){
        echo "{$this->name}:{$arg}";
    }
}

$hanMM=new Student('韩梅梅','女');
$hanMM->eat('苹果');
$hanMM->test('数学');

$xiaoXin=new Worker('蜡笔小新','男');
$xiaoXin->eat('青椒');

$liLei=new ClassLeader('李雷','男');
$liLei->eat('香蕉');
$liLei->manage('你们上课不要乱说话,不要影响其他同学!');

//韩梅梅正在快速地吃苹果!
//
//韩梅梅正在考数学
//
//蜡笔小新正在吃青椒
//
//李雷正在快速地吃香蕉!
//
//李雷:你们上课不要乱说话,不要影响其他同学!

 

string get_parent_class ([mixed $obj])

返回对象或类的父类名,如果在对象的方法内调用,则 obj为可选项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值