面向对象基础

面向过程与面向对象

面向过程:

举例:假如你是公司内一名员工,今天又个任务需要在公司组装一批电脑,那你就需要采购、讨价还价、运输回公司、开始组装、布线网络、调试机器、完成。

也就是说,面向过程就是具体化的实现,细节明确。

面向对象:

假如你是公司总裁,你布置给一名员工组装一批电脑的任务。完毕。也就是。面向对象就是抽象化的执行具体还是由那名员工来完成。而细节方面,总裁不需要去考虑。这样的好处是:在有管理高层的公司,可以协调作业,而没有管理的公司就会乱作一团。

OOP(面向对象)特点

封装

隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。

继承

继承是从一个基类得到一个或多个类的机制。
继承自另一个类的类被称为该类的子类。这种关系通常用父子关系来比喻。子类将继承父类的特性,这些特性由属性和方法组成子类可以增加父类之外的新功能,因此子类也被称为父类的“扩展”。

多态

多态是指OOP能够根据使用类的上下文来重新定义或改变类的性质或行为或者说接口的多种不同的实现方式即为多态。把不同的子类对象都当做父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。

OOP的概念

类(class)

类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。实际上它本身并不是对象,因为它不存在于内存中。当引用类的代码运行时,类的一个新的实例,即对象,就在内存中创建了。虽然只有一个类,但能从这个类在内存中创建多个相同类型的对象。

对象(object)

对象是一件事、一个实体、一个名词,一个实体。可以想象有自己的标识的任何东西,对象是类的实例化
比如:汽车、人、房子、桌子…万物皆对象。
而,类是对象的抽象定义,也就是说,如果对象是电脑,那类可以创建出许多是电脑的对象(也就是类中可以有很多对象)。

成员(filed)

成员是用于描述类的某方面的性质,成员也叫字段。它与一般的PHP变量非常相似,只有一些细微差别。

属性(attribute)

通过方法来访问和操作字段,一方面可以保护字段,同时还允许访问公共字段一样访问数据。

创建OOP

<?php
    //创建类格式:修饰符 class 类名 {}
    class Computer { //类名第一个字母大写

    }
    //创建一台电脑,也就是对象(实例)的声明
    //格式: 变量 = new 类名()
    //new Computer()这个过程叫实例化(实例化一个对象)
    // $computer1叫做对象的引用。
    $computer1 = new Computer();
    var_dump($computer1); 
?>

注意:
var_dump() 能打印出类型
print_r() 只能打出值
echo() 是正常输出…
需要精确调试的时候用 var_dump();
一般查看的时候用 print_r()
另外 , echo不能显示数组 其余2个可以。

成员(字段)的添加:
<?php
    class Computer{
        //成员的声明格式:修饰符 变量名[=xxx]; 
        public $_name; //public表示公有,类外可以访问。
        public $_model;
    }

    //创建一个对象并实例化。
    //->表示指向某个成员的意思,记住是没有$符号的。
    $computer1 = new Computer();
    //给成员字段赋值
    $computer1->_name='联想';
    //取值
    echo $computer1->_name;
?>
方法的创建:
<?php
    class Computer{
        public $_name; //public表示公有,类外可以访问。
        public $_model;

        //创建方法的格式:修饰符 fucntion 方法名(){}
        //如果不加修饰符,默认就是public
        public function _run(){
            echo '我是运行的方法';
        }
    }

    //创建一个对象并实例化。
    //->表示指向某个成员的意思。
    $computer1 = new Computer();
    $computer1->_run();

?>

方法创建完之后可以进行传参:

<?php
    class Computer{
        public $_name; //public表示公有,类外可以访问。
        public $_model;

        //创建方法的格式:修饰符 fucntion 方法名(){}
        //如果不加修饰符,默认就是public
        public function _run($_who){
            echo $_who. '我是运行的方法';
        }
    }

    //创建一个对象并实例化。
    //->表示指向某个成员的意思。
    $computer1 = new Computer();
    $computer1->_run('hhh');

?>
构造方法__construct()

构造方法也是方法,只是一种特殊的方法。而方法名必须和类名一致,并且不需要像普通方法那样必须调用才能执行,只需要实例化即可完成调用过程。
一般,构造方法用于初始化的工作。

<?php
    class Computer{
        //创建构造方法,__construct()是两个下划线
        public function __construct(){
            echo '我是构造方法';
        }
    }

    //只需实例化就可以运行构造方法
     new Computer();

?>
析构方法__destruct()

它的用途是在整个类使用完毕后执行,一般用于清理内存中的对象(脚本执行完毕的时候会自动清理)。
如果有脚本执行完毕后没有清理的,比如数据库数据等,就有必要用析构方法。

<?php
    class Computer{
        //创建构造方法,__construct()是两个下划线
        public function __construct(){
            echo '我是构造方法';
        }
        //普通方法
        public function _run(){
            echo '我是普通方法';
        }
        //析构方法
        public function __destruct(){
            echo '我是析构方法';
        }
    }

     $computer1 = new Computer();
     echo $computer1->_run();

?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值