码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象

时间:2019-08-15 21:08:14      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:字符   重用   strong   ima   OLE   事件   tor   prot   定义   

一、基础了解(面向对象:简称 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)调用类中的静态属性,静态方法,以及常量。

面向对象

标签:字符   重用   strong   ima   OLE   事件   tor   prot   定义   

原文地址:https://www.cnblogs.com/dengpu/p/11359331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!