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

    1.封装
    将类里面的成员变量加一个private修饰符变成私有的,目的是为了保护类里面的成员不被外界随意访问,从而确保类的安全性。如果将变量设置为私有,如何去访问:
    1.自己写函数get函数set函数,然后来对变量赋值和取值
    2.用系统自带的__get()函数和__set()函数来实现类里面的变量赋值取值
    function __set($name,$value)
    {
    $this->$name = $value;
    }
    function __get($name)
    {
    return $this->$name;
    }
    封装:访问成员变量的方法
    public function SetAge($age)
    {
    if($age>18 && $age<80)
    {
    $this->age = $age;
    }
    }

    封装:简便方法赋值
    public function __set($name,$value)
    {
    if($name == "age")
    {
    if($value>18 && $value<80)
    {
    $this->$name = $value;
    }
    }
    else
    {
    $this->$name = $value;
    }

    }
    封装:简便方法获取值
    public function __get($name)
    {
    return $this->$name;
    }



    public function Say()
    {
    echo $this->name."这个人在讲话";
    }
    构造函数,初始化
    function __construct($name,$sex)
    {
    $this->name = $name;
    $this->sex = $sex;
    }
    析构函数,在对象要销毁的时候自动调用,可以在里面进行释放内存,关闭连接等操作
    function __destruct()
    {
    echo "该对象马上要销毁了";

    2.静态
    关键字:static ,如果成员声明了为静态的,那么该成员是属于该类的,不是属于对象的
    如何调用静态的成员:
    HaShiQi::$height = 10;
    HaShiQi::Gao();
    用类名加双冒号调用类的静态成员
    class AA
    {
    const SS = 5; //定义常量
    static public $cc;
    static function Say()
    {
    echo "aaaaaaa";
    }
    }

    }
    3.继承
    class Student extends Ren
    {
    public $class;

    //父类方法重写
    function Say()
    {
    parent::Say(); //调用父类中的方法
    echo "这是子类中的方法";
    }
    }

    final关键字,用来修饰类,如果把一个类定义成final类,该类就无法被继承

    多态
    ①必须要发生在继承下
    ②子类对父类的方法进行重写
    继承一般是单继承:一个儿子只能有一个父亲
    子类可以继承父类的所有成员
    子类可以对父类的成员方法进行重写:(函数名一样),如果要在子类方法中调用父类的方法,用parent::Jiao();
    function Jiao()
    {
    parent::Jiao();

    echo "hello";
    }
    final关键字可以定义该类为最终类,不可被继承

    父类
    class Ren
    {
    public $name;
    public $age =10;
    public $aa=17;
    public function Say()
    {
    echo $this->name."正在说话";
    }

    function __construct($n)
    {
    $this->name = $n;
    }
    function __tostring()
    {
    return "成员变量name的值为:".$this->name."<br>"."成员方法Say()的作用是。。。";
    }
    function __clone()
    {
    $this->age = 18; //$this找的是复本
    }
    }
    $ren = new Ren("aa");
    $r1 = clone $ren; //克隆对象
    var_dump($r1);
    var_dump($ren);

    子类
    class China extends Ren
    {
    public function Say()
    {
    echo "你好";
    }
    }

    父类引用指向子类实例,由于子类的不同,父类引用在调用方法时所表现出的差别

    Ren r1 = new China();
    r1.Say();
    $ren = new China("hello");
    $ren->Say();

    5.面向过程

    $r1 = 20;
    $r2 = 10;

    $mj = 3.14*$r1*$r1 - 3.14*$r2*$r2;

    echo $mj;

    5.面向对象
    定义类

    class Yuan
    {
    private $r;
    function __construct($r)
    {
    $this->r = $r;
    }
    function Mj()
    {
    return 3.14*$this->r*$this->r;
    }
    }
    $yuan1 = new Yuan(20);
    $yuan2 = new Yuan(10);
    echo $yuan1->Mj()-$yuan2->Mj()

    $this关键字
    $this->name;this代表该对象,如果要在成员方法中调用成员变量,一定要使用$this找出该成员变量

    6.将类引入页面,加载类
    include("0322class.php");
    require_once("0322class.php");
    include "0322class.php";
    require_once "0322class.php";

    7.自动加载类
    function __autoload($classname)
    {
    require_once "class_".$classname . '.php';
    }

    $test = new Test();

    var_dump($test);

  • 相关阅读:
    C# 与Sql server 获取数据和执行命令
    关于*.ashx 处理程序调试时 未能创建类型 错误
    winform 利用Http向服务器上传与下载文件
    CSS 使用absolute 是<div>居中
    C# int[,] 和 int[][]
    《Head First JavaScript》 学习笔记
    【单片机】关于头文件
    【单片机】【710】定时器
    【C#】委托
    【C#】关于接口的理解
  • 原文地址:https://www.cnblogs.com/Yue0327/p/5338698.html
Copyright © 2011-2022 走看看