zoukankan      html  css  js  c++  java
  • PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)

    面向对象的三大特性:封装性、继承性、多态性

    抽象的定义:在定义一个类的时候,通常把一类事物共有的属性和行为提取出来,形成一个物理模型,这种研究的方法称为抽象。

    一、封装性

    封装就是把抽取出来的数据和对数据的操作封装在一起,数据被保存在内部,程序的其他部分只有被授权的操作(方法)才能对数据进行操作。

    public 表示全局,本类内部,类外部,子类都可以访问 
    protected 表示受保护的,只有本类或子类可以访问 
    private 表示私有的,只有本类内部可以访问 

     1 <?php 
     2 class Person{ 
     3     public $name; 
     4     protected $age; 
     5     private $salary; 
     6     function __construct($name,$age,$salary){ 
     7         $this->name=$name; 
     8         $this->age=$age; 
     9         $this->salary=$salary; 
    10     } 
    11     public function showinfo(){ 
    12         echo $this->name."||".$this->age."||".$this->salary; 
    13     } 
    14 } 
    15 $p1=new Person('张三',20,3000); 
    16 $p1->showinfo();
    17 ?> 

    二、继承性

     1 <?php 
     2 class Students{ 
     3     public $name; 
     4     public $age; 
     5     public function __construct($name,$age){ 
     6         $this->name=$name;
     7         $this->age=$age;
     8     }
     9     public function showinfo(){ 
    10         echo $this->name.'||'.$this->age; 
    11     } 
    12 } 
    13 class Pupil extends Students{ 
    14     function testing(){ 
    15         echo 'Pupil '.$this->name.' is testing'; 
    16     } 
    17 } 
    18 class Graduate extends Students{ 
    19     function testing(){ 
    20         echo 'Graduate '.$this->name.' is testing'; 
    21     } 
    22 } 
    23 $stu1=new Pupil('张三',20); 
    24 $stu1->showinfo(); 
    25 echo '<br/>'; 
    26 $stu1->testing(); 
    27 ?> 

    三、多态性

     1 <?php 
     2 class Animal{ 
     3 public $name; 
     4 public $price; 
     5 function cry(){ 
     6 echo "i don't know"; 
     7 } 
     8 } 
     9 class Dog extends Animal{ 
    10 
    11 function cry(){ 
    12 echo 'Wang Wang!'; 
    13 Animal::cry();
    14 } 
    15 } 
    16 $dog1=new Dog(); 
    17 $dog1->cry(); 
    18 ?>

    1、当一个父类知道所有的子类都有一个方法,但是父类不能确定该方法如何写,可以让子类去覆盖它的方法,方法覆盖(重写),必须要求子类的方法名和参数个数完全一致 
    2、如果子类要去调用父类的某个方法(protected/public),可以使用 父类名::方法名 或者 parent::方法名 
    3、在实现方法重写的时候,访问修饰符可以不一样,但是子类方法的访问权限必须大于等于父类方法的访问权限(即不能缩小父类方法的访问权限) 
    如 父类public function cry(){} 子类 protected function cry(){} 则会报错 
    但是子类的访问权限可以放大,如: 
    父类private function cry(){} 子类 protected function cry(){} 可以正确执行 

    public 表示全局,本类内部,类外部,子类都可以访问 
    protected 表示受保护的,只有本类或子类可以访问 
    private 表示私有的,只有本类内部可以访问 

  • 相关阅读:
    php 上传大文件问题
    两台虚拟机实现负载均衡
    lnmp一键安装包搭建lnmp环境
    PHPExcel在读取时时间的处理
    ZeroMQ研究与应用分析
    堆排序(概念、原理、实现)
    HASH表的实现(拉链法)
    加密和数字签名工具GPG
    我的2014 一言难尽
    MySQL优化之profile
  • 原文地址:https://www.cnblogs.com/hell0x/p/5568252.html
Copyright © 2011-2022 走看看