7月16日

PHP面向对象三大特征

继承:

继承是面向对象中的重要特点之一,就是可以实现一个类只可以继承一个父类,但是一个父类却可以被多个子类所继承

使用继承,关键字extends

默认父类Animal中的属性和行为都被子类继承下来,可以不要再去声明了

继承可以大大的减少我们代码中的重复

继承只能有且也只有一个父类

构造函数也能被继承,当然它也会被子类的构造函数覆盖

具体代码如下:

<?php

class Animal

{  

    public $name;   

  public function shout()  

   {      

   echo "动物都会叫".',';     

}

} /** * class Dog * 使用继承,关键字extends 

* 默认父类Animal中的属性和行为都被子类继承下来,可以不要再去声明了 

* 继承可以大大的减少我们代码中的重复 * 继承只能有且也只有一个父类 

* 构造函数也能被继承,当然它也会被子类的构造函数覆盖

*/

class Dog extends Animal {   

  public function __construct($name)    

 {       

  $this ->name =$name;    

 }     public function desc()   

  {        

 echo "狗狗的名字:".$this ->name.',';  

       $this ->shout();  

   }     /**   

  * 函数方法的重写   

  * 将父类中的已经定义过的函数进行重新的定义 

   */  

  public  function shout()

    {        

 //parent关键字,意思为父母,在这里指代当前类的父类对象

     //parent::shout();        

echo "狗狗的叫声:汪汪汪";  

   }

}

class Cat extends Animal {  

   public function __construct($name)   

  {         $this ->name =$name;   

  }     public function desc()   

  {        

 echo "喵咪的名字:".$this ->name.',';     

    $this ->shout();  

   }    

 public  function shout()   

  {      

   //parent关键字,意思为父母,在这里指代当前类的父类对象

//        parent::shout();        echo "喵喵的叫声:喵喵喵";   

  }

} $dog = new Dog('旺财');

$dog ->desc();

echo "<br>";

$cat = new Cat('咪咪');

$cat ->desc();

封装:

是对象和类概念的主要特性封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。(也就是把客观的事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的信息隐藏)

多态:

多态分为抽象和接口

抽象:

使用抽象关键字修饰的类就叫抽象类

抽象类不一定需要有抽象方法,但是包含抽象方法的类必须是抽象类

抽象类不能实例化

 

抽象的关键字:abstract

使用abstract修饰的函数方法称为抽象方法

抽象方法只有函数的声明部分,不包含实现部分,且要用分号代表结束

继承了带有的抽象方法的类必须实现抽象方法的定义

代码如下:

 

<?php 
//抽象
/**
* 使用抽象关键字修饰的类就叫抽象类
* 抽象类不一定需要有抽象方法,但是包含抽象方法的类必须是抽象类
* 抽象类不能够实例化
* */
abstract class Animal{
/**
* 使用abstract修饰的函数方法称为抽象方法
* 抽象方法只有函数的声明部分,不包含实现部分,且要用分号代表结束
* 继承了带有的抽象方法的类必须实现抽象方法的定义
*/
public abstract function shout();
}
abstract class Dog extends Animal{
}
class Cat extends Animal{
public function shout()
{
echo "抽象函数方法被实现";
}
}

接口是方法的抽象


接口关键字interface 在接口中的函数都是公共的抽象函数方法


这些函数不能添加abstract关键字,他是也可以省略public


实现了某个接口,那么必须实现该接口中的所有的抽象方法


一个类可以实现多个接口。

具体代码如下:
//接口
/**
* 接口关键字interface
* 在接口中的函数都是公共的抽象函数方法
* 这些函数不能添加abstract关键字,同时也可以省略public
* 接口通常都是一组功能的结合 */
interface IEly{
public function fly();
function test();
}
interface IEat{
function eat();
}
/**
* class Bird
* 实现了某个接口,那么必须实现该接口中的所以的抽象方法
* 一个类可是实现多个接口
*/
class Bird implements IEly,IEat{
function eat(){
}
public function test(){
}
public function fly(){
}
}

 

 

posted on 2017-07-16 20:17  liuyulian  阅读(127)  评论(0)    收藏  举报

导航