• PHP OOP


    类跟对象的关系
    类是对象的抽象(对象的描述(属性),对象的行为(方法))
     
    对象是类的实体
     
    面相对象的三大特征:封装、集成、多态
     
    自定义类
    Class Person{
     
    }
     
    属性定义
    属性是类里面的成员,所以要定义属性的前提条件是需要声明一个类
     
    Class Person{
        public $name;// 属性
        public $age;
        public $sex;
    }
     
    方法定义
    方法是定义特定功能的代码块,在类中定义方法表示,创建对象之后,对象的特定行为;
     
    Class Person{
     
        public function eat($food){
            echo "Person can eat ".$food;
        }
    }
     
    实例化对象
    Class Person{
     
        public $name;// 属性
        public $age;
        public $sex;
     
        public function eat($food){
            echo "Person can eat ".$food;
        }
     
    }
     
    $person1=new Person();
     
    属性的赋值
    $person1->name="curtis";
    echo $person1->name;
     
    类方法的调用
    $person1->eat("Apple");
     
    继承(PHP是单继承,也就是一个子类只能有一个父类)
    为什么要继承?
    回复:为了属性、方法的重复利用;
     
    业务场景:
    有个Person类,有一个Student类;
    Person里面有姓名、年龄、性别
    如果Student里面再将上面的属性定义一次,那就糟蹋了继承这个神器;
     
    Person类叫Student类的父类,Student类是Person类的之类;
     
    Class Person{
     
        public $name;// 属性
        public $age;
        public $sex;
     
        public function eat($food){
            echo "can eat ".$food;
        }
     
    }
     
    Class Student extends Person{
     
        public $student_id;
     
        public function write(){
            echo "I can write";
        }
     
        public function read(){
            echo "I can read";
        }
    }
     
    $student1=new Student();
     
    $student1->name="curtis1";
    echo $student1->name;
    echo "<br />";
     
    $student1->eat("面");
    echo "<br />";
     
    访问修饰符
    public protected private
     
    public 当前类,子类中均可访问;
    protected 当前类,子类内部允许访问;
    private 当前类内部允许访问;
     
    这个地方需要重点了解:
    范围
     
    什么叫类内部?
    {}内叫类内部,出了{},实例化对象的时候构造函数也是内内部;
     
    Class Person{
     
        public $name;// 属性
        public $age;
        private $sex;// 私有属性
     
        public function eat($food){
            echo "eat ".$food;
        }
     
        function __construct($sex){
            echo "性别:".$sex;
        }
     
    }
     
    Class Student extends Person{
     
        public $student_id;
     
        public function write(){
            echo "I can write";
        }
     
        public function read(){
            echo "I can read";
        }
    }
     
    $person1=new Person("男");
     
     
    static 关键字
    为什么要有这么一个关键字?
     
    常量
    PI
     
    静态属性 public static $PI = 3.14;
    静态方法 
     
    静态成员访问方式(类外部):
    类名::属性名称
     
    在当前类中访问静态属性:
    statis::属性名;
     
    在子类内部访问父类静态成员,parent::属性名;statis::属性名;
     
    class Person
    {
     
        public $name;
        // 属性
        public $age;
     
        private $sex;
        // 私有属性
        public function eat($food)
        {
            echo "eat " . $food;
        }
     
        public static $PI = 3.14;
     
        /**
         * 构造函数
         */
        function __construct($sex)
        {
            echo "性别:" . $sex;
        }
     
        function show(){
            echo static::$PI;
        }
    }
     
    class Student extends Person
    {
     
        public $student_id;
     
        public function write()
        {
            echo "I can write";
        }
     
        function __construct()
        {}
     
        public function read()
        {
            echo "I can read";
        }
     
        public function add()
        {
            echo 1 + parent::$PI."<br />";
            echo 2 + static::$PI;
        }
    }
     
    $person1 = new Person("男");
    echo "<br />";
    $person1->show();
    echo "<br />";
    echo Person::$PI . "<br />";
    $student1 = new Student();
    echo Student::$PI;
    echo "<br />";
    $student1->add();
     
    方法的重写
    方法的重载
     
    什么叫相同的方法,什么叫不同的方法?
    回复:相同的方法:方法名称相同,方法的参数列表相同;
           不同的方法:方法名称不同;方法名称相同,方法的参数列表不同;
     
    为什么会有方法的重写?
    回复:父类定义的方法子类有同样的方法,子类的中的方法要实现有自己的行为;
     
    方法的重载
    为什么会有方法的重载?
    回复:类中同样一个方法名称,通过不同的参数传递实现各自的行为;
     
    final关键字
    跟方法的重写对应来的
    父类中有一个final关键字修饰的方法,子类想对该方法进行重写那是不被允许的;
     
    接口(interface)
     
     
  • 相关阅读:
    lbs(查看附近的人),看看社交软件如何实现查看附近的人
    PHP框架中的日志系统
    PHP链式操作输出excel(csv)
    看看你的正则行不行——正则优化一般的json字符串
    PHP设计模式(三)
    PHP设计模式(二)
    PHP设计模式(一)
    PHP守护进程
    数据库的常用日志
    浅谈数据库事物
  • 原文地址:https://www.cnblogs.com/meroselove/p/5275318.html
Copyright © 2020-2023  润新知