zoukankan      html  css  js  c++  java
  • PHP面向对象解析

    //面向对象
    //一、什么是面向对象
    //面向过程
    //什么是对象
    //一切皆是对象
    //类
    //由对象抽象画
    //造类
    class Ren
    {
    //构造方法
    function __construct($n)
    {
    $this->name = $n;
    }

    //成员变量
    public $name = "平阳";
    private $sex = "男";
    //成员方法
    public function Speak(){
    echo "正在说话";
    echo $this->sex;
    }
    }

    //this (这个对象)
    //对象实例化
    $r1 = new Ren("平阳");

    //$r1->name = "张杰";

    echo $r1->name;

    $r2 = new Ren("张杰");
    echo $r2->name;

    //var_dump($py);
    //var_dump($r1==$r2);
    //
    //访问修饰符:

    //public 公共的,所有对象都可访问
    //protected 受保护的,当前类和子类可以访问
    //private 私有的,当前类可以访问(只有内部可以访问)

    //构造方法(写不写都存在)
    //类的初始化方法

    //////////////////////////////////

    //上午总结

    class Renlei
    {
    // 构造函数/构造方法
    function __construct($name, $sex)
    {
    $this->name = $name;
    $this->sex = $sex;
    }

    // 析构函数/析构方法
    function __destruct()
    {
    echo "这是析构方法";
    }

    private $name;
    private $sex;
    private $age;
    private $mz;

    // 双下划线开头的方法=>魔术方法
    function __set($n, $v)
    {
    if ($n == "age") {
    if ($v > 10 && $v < 50) {
    $this->$n = $v;
    }
    }else{
    $this->$n = $v;
    }
    }

    function __get($n)
    {
    if($n == "sex"){
    if($this->$n == "1"){
    return "男";
    }else{
    return "女";
    }
    }
    return $this->$n;
    }

    public function speak()
    {
    echo "正在说话";
    }
    }

    $r3 = new Renlei("py", "1");
    //$r3->__set("age", "9");
    $r3->age="11";
    echo $r3->sex;

    echo "<pre>";
    var_dump($r3);
    echo "</pre>";
    //面向对象(OOP)的三要素
    //封装,继承,多态
    //1.封装
    //目的:让类更加安全
    //步骤:1,把所有的成员变量私有化
    // 2,对成员变量进行赋值
    // 3,对成员变量进行限制
    class Ren
    {
    private $name;
    private $sex;

    function __construct($n,$v)
    {
    if ($n=="name"){
    $this->$n =$v;
    }else{
    $this->$n =$v;
    }
    }

    function __toString()
    {
    // TODO: Implement __toString() method.
    return"这是个方法";
    }

    function Speak(){
    echo "正在说话";
    }
    }


    $r1 = new Ren("name","张三");
    echo $r1;

    //继承
    //概念:子类可以继承父类的一切
    //方法:


    //override 重写
    //overload 重载 编译多态

    class Chinese extends Ren{
    function spesk(){
    // parent::speak();
    echo "哈哈哈哈哈";
    }
    }
    $r2 = new Chinese("name","李四");
    $r2->spesk();

    //不知道传了多少把它都变成一个数组
    function abc(){
    $arr = func_get_args();
    }

    //多态(运行多态)
    //概念:当父类引用指向子类实例,子类里面对父类进行重写,父类引用调用该方法的时候表现不同的方法


    //普通成员
    //普通成员是属于对象的


    //静态成员
    //静态成员属于类

    class Fenbi{
    public $lenght = "10cm"; //普通成员 属于类 static
    public static $color; //静态成员 属于类

    function hua(){
    echo $this->lenght;
    echo self::$color;
    }
    static function hua2(){
    echo self::$color;
    }
    }

    $fb = new Fenbi();
    $fb->hua();

    Fenbi::$color = "red";
    Fenbi::hua2();
    $fb2 = new Fenbi();
    $fb2->hua();

    //关键字
    //self 在类里面代表该类

    //静态方法不能调用普通成员
    //普通方法可以调用静态成员

    //抽象
    //关键字 abstract
    //特点 不能被实例化只能被继承
    //目的 为了派生子类 控制子类

    //用于写基类
    abstract class Renlei{
    public $name;

    function speak(){
    echo "正在说话";
    }
    }


    //接口 (面向对象的接口)
    //极度抽象的类
    //接口里面不能包含成员变量,只能包含成员方法
    //成员方法没有函数体
    //interface 命名大写I开头 implements
    //实现接口的类,必须实现接口里面的所有方法


    interface Iusb{
    public function read();
    public function write();
    }
    class mouse implements Iusb{
    function read()
    {
    // TODO: Implement read() method.
    }
    function write()
    {
    // TODO: Implement write() method.
    }
    }

    //接口(API) 区分
  • 相关阅读:
    MySQL命令2
    MySQL命令1
    前端之HTML1
    linux命令之df dh
    python call java jar
    redis-py中的坑
    YARN应用程序的开发步骤
    Yarn的服务库和事件库使用方法
    SSH无密码验证
    在centos 6.5 在virtual box 上 安装增强版工具
  • 原文地址:https://www.cnblogs.com/little-rock/p/7676343.html
Copyright © 2011-2022 走看看