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

    一、基础了解(面向对象:简称 OOP  是一种程序设置模式)

           面向对象是一个思想,就是把解决问题的注意力集中到对象上,把所有相关的属性和方法封装到一个对象中

           一般基础的编程都是面向过程的,涉及到大的网站的时候通常都采用面向对象的方法

      面向对象基于面向过程但又不等同于面向过程,他是在面向过程的基础上,对涉及到的代码进行封装,然后调用,实现效果

       类:通过class定义,首字母要大写

      对象:是类的实例    通过new关键字,得到一个实例对象

    二、优势

            面向对象大大节省了代码的重用,减少了代码量

      对象只是一种特殊的数据。对象拥有属性方法

    三、特征

           三大特征:封装、继承、多态

           继承:通过继承,可以使子类获取到父类的属性和方法,从而能够提高代码的复用性,他不仅拥有父级的属性和方法,还有独属于他的属性方法

      多态:不同的对象可以定义相同名称的方法,方法作用于所在的对象中。这种不同对象通过相同方法的调用实现各自行为的能力,被称之为多态。

     四、面向对象中的this指向

            在全局中,this指向window;

      在绑定事件的是处理函数中,this指向事件源

           在对象的方法中使用,this指向那个对象本身

           在定时器中调用函数使用,this指向window

     js

     js继承

      1、原型继承:将父类的实例对象赋值给子类的原型    私有的、公有的都继承为公有的。

        function Person(name){
            this.name=name;
        }
        Person.prototype.fn=function(){
            console.log(1)
        }
        var p1 = new Person();
        p1.name="zhang"
        console.dir(p1)
        
        function Son(){
            this.age=23;
        }
        Son.prototype=p1;
        //将父类的实例赋值给子类的原型
        var s1=new Son();
        console.dir(s1)

      2、call继承  call方法是函数/类天生自带的一个方法 将父类私有的继承为子类私有的。

        function Person(name){
            this.name=name;
        }
        Person.prototype.fn=function(){
            console.log(1)
        }
        var p1 = new Person();
        p1.name="zhang"
        console.dir(p1)
        
        function Son(){
            this.age=23;
            Person.call(this,"lisi")
        }
        var s1=new Son();
        console.dir(s1)

      3、冒充对象继承: 将父类私有的和公有的都继承为子类私有的。使用for..in..

    冒充父类继承    
        function Person(name){
            this.name=name;
        }
        Person.prototype.fn=function(){
            console.log(1)
        }
        var p1 = new Person("zhang");
        console.log(p1)
        for(var key in p1 ){
            console.log(key)
        }

      4、混合继承   私有继承为私有的,公有的和私有的再继承为私有    call继承和原型继承的结合 

      function Person(){
          this.name="zhangsan"
      }
      Person.prototype.fn=function(){
          console.log(111)
      }
      var p1=new Person;
      function Son(){
          Person.call(this)   //私有的继承为私有的
      }
      
      Son.prototype=p1;
      
      var s1=new Son;
      console.log(s1)

      5、组和继承   私有的继承为私有,公有继承为公有

      6、中间类继承

     php

    php实现继承:给子类使用extends关键字,让子类继承父类

    注意事项:子类智能继承父类的非私有属性;子类继承父类后,可以直接使用$this调用;php只能单继承,不支持一个类继承多个类,但是一个类可以进行多层继承 

    class Person{}
    class Adult extends Person{}
    class Student extends Adult{}
    //student 类就同时具有了Adult类和Person类的属性和方法

    *    $this : PHP中的伪变量,表示自身的类

    *    __construct() : php中的魔术方法,构造函数,在实例化类时自动执行

    *    __destruct() : php中的魔术方法,析构函数,当类调用完成后自动执行

     

    php的静态方法和普通方法的区别

    同:都是存在于类内,只有一份

    异:普通方法需要对象去调动,需要绑定$this 即,普通方法,必须要有对象,且用对象调动

           而静态方法,不属于哪个对象,属于类,因此不需要去绑定$this. 即,静态方法,通过类名就可以调动. 

     

    php中通过访问修饰符给类添加成员

    Public    添加的成员是公有的,在类内、类外、子类都可以访问

    protected    受保护的,只能在类的里面和子类访问,类外面不能访问

    private        私有的只能在类内访问

    实例对象   通过 ->  访问类里面的成员,例:

    class Person{
        public $name = "zhangsan";
    }
    $zhang = new Person;
    echo $zhang ->name

    对象   ->  获取属性时,属性前不需要加  $

    构造函数 __constructor

    析构函数

        我们new实例的时候就是调用构造函数,函数调用的时候会调用内存空间

      调用完后自动销毁销毁之前会自动调用  __destruce这个析构函数

       析构函数不能带有任何的参数;

     实例化对象及对象属性方法的调用:
      $对象名 = new 类名(); //()可以不带

    类外部调用属性和方法:
      $对象名 -> $属性名; //使用->调用属性时,属性名不能带$符号

    类内部调用属性和方法:
      $this -> $属性名;

    什么是构造函数?
      构造函数是类中的一个特殊函数,当我们使用new关键字实例化对象时,相当于调用了类的构造函数。

    构造函数有什么作用?
      实例化对象时,自动调用,用于给对象的属性赋初值!

     php中创用的几种操作符

    ① . 只能连接字符串; "".""
    ② => 声明数组时,关联键与值["key"=>"value"]
    ③ -> 对象($this new出的对象)调用成员属性,成员方法;
    ④ :: ①使用parent关键字,调用父类中的同名方法:parent::say();
            ②使用类名(和self)调用类中的静态属性,静态方法,以及常量。

  • 相关阅读:
    iOS 验证码按钮倒计时
    简单三层复习
    文件读写,改进版
    第一个文件读写的例子
    文件读写原理
    Ajax原理
    MVC,布局页面
    在MVC视图的代码块中,直接输出文本,有几种方式?
    MVC,如何在视图中声明方法,调用方法?
    MVC怎么在当前视图中,传递参数给到另外一个视图?
  • 原文地址:https://www.cnblogs.com/dengpu/p/11359331.html
Copyright © 2011-2022 走看看