PHP之面向对象(七)

引言

任何一种编程语言,面向对象都具有三大特性:封装、继承、多态。在开始本篇之前,我们先来说明一下类和对象的关系。对象就是具体的某个事物,比如,小猫卡卡、小狗哈哈,对象就是实实在在的客观事物。那类是什么呢?俗话说,物以类聚,人以群分。类就是物体的抽象表示。比如小猫卡卡和小猫嘟嘟都是小猫,小猫就是一个类。说到小猫,只知道是猫科动物,但在现实中是哪个东西,这个就不知道了。前文有讲过,编程是客观世界在虚拟世界的表达,类和对象也是用于演绎现实世界的表达。类是一类物体的抽象表示,对象就是类的具体化表示。类经过实例化后就成为了对象。

1. 封装

封装就是将事物的属性和技能封装到一起,其中属性被称为成员变量,技能被称为成员方法。在所有的编程语言中,成员变量和成员方法是一种共识性的说法,所以在接下来的讲解中,我们就统一采用这一种描述。

<?php
class Cat{
    var $mouse;
    function say(){
        echo 'miaomiao';
    }
}
$cat = new Cat();
$cat->say();

在该部分中,Cat类有成员变量mouse和成员方法say。嘴(mouse)也是Cat的属性,叫(say)也是Cat的技能。new Cat()后,也就完成了实例化,构造了对象$cat。对象通过调用方法就可以实现具体的业务逻辑。

2. 继承

常言道,老子英雄儿好汉。父亲具有的技能通常情况下会潜移默化的影响子孙后代,而祖上积累的家业(比如财富)也会传给子孙后代。子孙除了继承父辈的财产外,也会靠自身的努力拥有一部分财富并学会一系列的技能。让我们用程序来演绎一下吧。

<?php

class Father
{
    var $baseWealth = 10;

    function can()
    {
        echo '我能赚10元';
        echo '</br>';
    }
}

class Child extends Father
{
    var $childWealth = 5;

    function childCan()
    {
        echo '我能赚5元';
    }
}

$child = new Child();
$child->can();
$child->childCan();

$child为实例化Child类的对象,不仅拥有了自身的成员方法childCan,还可以使用父类的成员方法(父类技能)can。

看下结果。

3. 多态

多态是父类的对象可以调用任意一个子类的方法,比如动物会叫,猫是动物的子类,猫叫是喵喵,狗也是动物的一种,狗叫是旺旺。当动物这个类调用子类猫叫时是喵喵,动物调用子类狗叫时是旺旺。这就是多态。

<?php

class Animal
{
    function say()
    {

    }
}

class Cat extends Animal
{
    var $mouse;

    function say()
    {
        echo '喵喵';
        echo '<br/>';
    }
}

class Dog extends Animal
{
    function say()
    {
        echo '旺旺';
    }
}

function say(Animal $animal)
{
    $animal->say();
}

$cat = new Cat();
$dog = new Dog();
say($cat);
say($dog);

总结

封装、继承、多态是面向对象的三大特性,在接下来学习框架的过程中会时常用到,希望大家还是要好好掌握。

此外,面向对象还有权限、构造函数、析构函数、接口等等都比较简单,还望自行百度学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值