PHP面向对象程序设计之继承性

一、类继承的应用
<?php

class A {
    public $name = "zhangsan";
    public $age = 20;

    public function say() {
        return $this -> name;
    }
}

class B extends A {
}

class C extends A {
}

$b = new B ();
var_dump ( $b );
echo $b -> say ();
echo "<hr />";

$c = new C ();
var_dump ( $c );
echo $c -> say ();
?>

<?php

class person{
    public $name;
    public $age;
    public $sex;

    public function __construct($name,$age,$sex){
        $this -> name = $name;
        $this -> age = $age;
        $this -> sex = $sex;
    }

    public function say(){
        echo "say...";
    }

    public function eat(){
        echo "eat...";
    }

    public function run(){
        echo "run...";
    }
}

class teacher extends person{
    public function teach(){
        echo "teach...";
    }
}

class student extends person{
    public function learn(){
        echo "learn...";
    }
}

$teacher = new teacher("zhangsan",30,‘nan‘);
$teacher -> say();
$teacher -> teach();
echo "<hr>";

$student = new student("lisi",18,‘nv‘);
$student -> run();
$student -> learn();
?>

二、访问类型的控制
<?php
//访问类的控制的三种类型
class person {
    public $name;
    private $age;
    protected $sex;

    public function __construct($name, $age, $sex) {
        $this -> name = $name;
        $this -> age = $age;
        $this -> sex = $sex;
    }

    public function p1() {
        echo "p1";
    }

    private function p2() {
        echo "p2";
    }

    protected function p3() {
        echo "p3";
    }

    //1.在类中调用
    public function test1(){
        echo $this -> name;
        echo $this -> age;
        echo $this -> sex;
    }
}

//2.在子类中调用
class student extends person {

    public function test() {
        echo $this -> name;
        echo $this -> age;
        echo $this -> sex;
    }
}

//3.在类外调用
$person = new person ( "zhangsan", 18, ‘nan‘ );
echo $person -> name;
echo $person -> age;
echo $person -> sex;
?>

三、子类中重载父类的方法
<?php

class person{
    public $name;
    public $age;
    public $sex;

    public function __construct($name,$age,$sex){
        $this -> name = $name;
        $this -> age = $age;
        $this -> sex = $sex;
    }

    public function say(){
        echo "My name is {$this -> name}, my age is {$this -> age}, my sex is {$this -> sex}";
    }
}

class teacher extends person{
    public $teach;

    public function __construct($name,$age,$sex,$teach){
//         $this -> name = $name;
//         $this -> age = $age;
//         $this -> sex = $sex;
        parent::__construct($name,$age,$sex); //这句代码代替上面的三句
        $this -> teach = $teach;
    }

    //声明一个同名的方法,就可以重写
    public function say(){
        parent::say();
        echo ", my teach is {$this -> teach}";

    }
}

class student extends person{
    public $school;

    public function __construct($name,$age,$sex,$school){
        $this -> name = $name;
        $this -> age = $age;
        $this -> sex = $sex;
        $this -> school = $school;
    }

    public function say(){
        //echo "My name is {$this -> name}, my age is {$this -> age}, my sex is {$this -> sex}, my school is {$this -> school}";

        parent::say();
        echo ", my school is {$this -> school}";
    }
}

$teacher = new teacher(‘zhangsan‘,30,‘nan‘,‘shuxue‘);
$teacher -> say();

echo "<hr>";
$student = new student(‘lisi‘,18,‘nv‘,‘beida‘);
$student -> say();
?>
时间: 2024-10-10 08:11:44

PHP面向对象程序设计之继承性的相关文章

PHP系列(四)PHP面向对象程序设计

php面向对象程序设计 面向对象的优势:可读性.可重用性.稳定性.维护性.可测试性 简单格式: [修饰符]class 类名{ [成员属性] [成员方法] } 完整格式: [修饰符]class 类名 [extends 父类]  [implements 接口 ] { [成员属性] [成员方法] } 成员方法格式: [修饰符] function 方法名(参数){ [方法体] [return返回值] } 修饰符:public  protected  private static  abstract  f

面向对象程序设计介绍以及面向对象的基本特征

面向对象的程序设计(Object Oriented Programming,OOP)方法是目前比较流行的程序设计方法,和面向过程的程序设计比,它更符合人类的自然思维方式.在面向过程程序设计中,程序=数据+算法,数据和对数据的操作是分离的,如果要对数据进行操作,需要把数据传递到特定的过程或函数中.而在面向对象程序设计中,程序=对象+消息,它把数据和对数据的操作封装在一个独立的数据结构中,该数据结构称作对象,对象之间通过消息的传递来进行相互作用.由于面向对象本身固有的特性,使得面向对象程序设计已经达

C++基础—面向对象程序设计

一.面向对象程序设计        1.1什么是面向对象程序设计 面向过程的程序设计思想的核心是功能的分解.将数据结构和过程分离,着重点在过程,设计者首先考虑如何将功能分解,在每一个过程中安排程序的操作序列.缺点之一,当程序的数据结构需要变更的时候,需要修改与之相关的缩影模块,造成了可重用性差,维护代价高. 面向对象程序设计中,着重点在被操作的数据而不是实现这些操作的过程. 程序=对象+消息 基本元素是对象,主要结构特点:1)程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定他们

设计模式李建忠(面向对象程序设计部分)

面向对象 面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流.面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围.如数据库系统.交互式界面.应用结构.应用平台.分布式系统.网络管理结构.CAD技术.人工智能等领域.       谈到面向对象,这方面的文章非常多.但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现.其初,“面向对象”是专指在程序设计中采用封装.继承.抽象等设计方法.可是,这个定义显然不能再适

赵栋 201771010137 《面向对象程序设计(java)》第一周学习总结

<面向对象程序设计(java)>第一周学习总结第一部分:课程准备部分 平台名称 注册账号 博客园:www.cnblogs.com/ https://www.cnblogs.com/zd0421/ 程序设计评测:https://pintia.cn/ [email protected] 代码托管平台:https://github.com/ STPPKJ 中国大学MOOC:https://www.icourse163.org/ 17393165076 以下回答是或否 是否加入课程班级博客群 是 是否

张季跃201771010139《面向对象程序设计(java)》第一周学习总结(改)

张季跃201771010139<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com Tonma 程序设计评测:https://pintia.cn/ [email protected] 代码托管平台:https://github.com/ [email protected] 中国大学MOOC:https://www.icourse163.org/ 1987400371 以下回答是或否 是否

李晓菁201771010114《面向对象程序设计(Java)》第一周学习总结

201771010114李晓菁<面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com https://www.cnblogs.com/li-xiaojing/ 程序设计评测:https://pintia.cn/ [email protected] 代码托管平台:https://github.com/ ajingya 中国大学MOOC:https://www.icourse163.org/

《面向对象程序设计(java)》第一周学习总结

本人学号201771010138 姓名 邹丰蔚 <面向对象程序设计(java)>第一周学习总结 第一部分:课程准备部分 填写课程学习 平台注册账号, 平台名称 注册账号 博客园:www.cnblogs.com wxsfzfw 程序设计评测:https://pintia.cn/ [email protected] 代码托管平台:https://github.com/ [email protected] 中国大学MOOC:https://www.icourse163.org/ 1323889918

201771010143 张云飞《面向对象程序设计(java)》第六章学习总结

实验六继承定义与使用 实验时间2018-9-28 1.实验目的与要求 (1) 理解继承的定义: 特殊类的对象拥有一般类的全部属性与行为,称为特殊类对一般类的继承.一个类可以是多个一般类的特殊类,也可以从多个一般类中继承属性与行为,但在java语言中,不允许一个类从多个一般类中继承属性与行为,即在java语言中,只支持单继承. 在软件开发中,通过继承机制,可以利用已有的数据类型来定义新的数据类型.所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员.因此,类的继承性使所建立的软件具有开