php中面向对象的封装和继承

来源:互联网 发布:python matplotlib安装 编辑:程序博客网 时间:2024/06/10 09:37
<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 2017/9/29
 * Time: 18:55
 */
//封装!
/**
 *Class Animal:
 * 封装:  指的是把当前类当中的属性和方法都私有化,private ,保证数据的安全
 * private:  修饰的属性和方法只能在当前类当中被调用,出了类就无法调用,还可以被相应的方法
 *
 *
 *
 *
 */
class Animal
{
    var $name;
    /**
     * var $name   旧的PHP语言当中的定义结构写法   var:公有的
     */
    public $age;
    //封装和不封装的区别,创建了不使用默认是灰色的 $sex
    private $sex;
    /**
     * @return mixed
     */
    function Animal($name = "d", $age = 0, $sex = "")
    {
        $this->name = $name;
        $this->age = $age;
        $this->sex = $sex;
    }
    public function getName()
    {
        return $this->name;
    }
    /**
     * @param mixed $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }
    /**
     * @return mixed
     */
    public function getAge()
    {
        return $this->age;
    }
    /**
     * @param mixed $age
     */
    public function setAge($age)
    {
        $this->age = $age;
    }
    /**
     * @return mixed
     */
    public function getSex()
    {
        return $this->sex;
    }
    /**
     * @param mixed $sex
     */
    public function setSex($sex)
    {
        $this->sex = $sex;
    }
    function hao(){
        echo $this->name." ".$this->age."".$this->sex;
    }
}
//实例化当前类的对象
$myanimal = new Animal("大象",7,"公");
$myanimal->name="狮子";
$myanimal->age=9;
//$myanimal->sex="母";//是一个私有的,
$myanimal->setSex("母");
$myanimal->hao();




//继承!
/**
* 子类继承父类:当子类继承了父类,可以使用父类的属性和方法
* extends
*/
//类
class Person{


public $name;
public $age;
public $sex;


//    function Person($name="",$age=0,$sex=""){
//        $this->name=$name;
//        $this->age=$age;
//        $this->sex=$sex;
//
//    }
//这个叫构造方法   最新的构造方法:
public function __construct()
{
}




//普通方法


function hao(){
echo $this->name." ".$this->age." ".$this->sex;
}
//普通方法
function eat(){
echo "吃饭";
}
function drink(){
echo "喝水";
}
/**
* @return string
*/
public function getName()
{
return $this->name;
}


/**
* @param string $name
*/
public function setName($name)
{
$this->name = $name;
}


/**
* @return int
*/
public function getAge()
{
return $this->age;
}


/**
* @param int $age
*/
public function setAge($age)
{
$this->age = $age;
}


/**
* @return string
*/
public function getSex()
{
return $this->sex;
}


/**
* @param string $sex
*/
public function setSex($sex)
{
$this->sex = $sex;
}


}
//可以继承person类
class Doctor extends Person{
public $angel;
public $beautiful;


/**
* Doctor constructor.
* @param string $name
* @param int $age
* @param string $sex
*/
public function __construct($name = "", $age = 0, $sex = "")
{
parent::__construct($name, $age, $sex);
}


function hao()
{
parent::hao(); // TODO: Change the autogenerated stub
}


function eat()
{
parent::eat(); // TODO: Change the autogenerated stub
}


function drink()
{
parent::drink(); // TODO: Change the autogenerated stub
}




/**
*一个方法如果不写修饰权限:默认是public
*/
public function kanbing(){
echo "看病";
}


}
//创建了一个实例
$myDoctor=new Doctor("赵医生",20,"女");


$myDoctor->hao();










//程序的小知识!
//程序的发展史:
//* 1、0和1 电信号,非结构化程序,
//* 2、 汇编语言:  c 语言的原型  一直到C语言成熟,结构话编程   面向的是过程
//* 3、面型对象编程  面向的是个体,实体  ,指的是能够把现实的的具体的事物拿到程序当中去表示
//*          万事万物皆对象
//* 4、具体事物抽象化,把当前事物所代表的同一类事物给抽象化,