php面向对象三大特性

①封装

封装的目的:为了让类更安全.

<body>
<?php
class Ren{
	public $name;
	public $sex;
	public $age;//如果不想在外界随便修改和访问这个变量,那就需要封装
	}
$r= new Ren();
?>
</body>

类的成员变量都要封装,封装的函数前面是public,

封装的方法:

1将成员变量全部变为private   (也就是私有的) 

<body>
<?php
class Ren{
	public $name;
	public $sex;
	private $age;
	}
$r= new Ren();
?>
</body>

 2在类里面做一个成员方法来间接访问

<body>
<?php
class Ren{
	public $name;
	public $sex;
	private $age;
	public function setage($age){
   }//用函数做一个成员方法
}
$r= new Ren();
?>
</body>

3在该方法里面加限制条件

<body>
<?php
class Ren{
	public $name;
	public $sex;
	private $age;
	public function setage($age){
		if($age>=18 && $age<=50){
			$this->age=$age;
			}
   }
}
$r= new Ren();
$r->setage(20);
var_dump($r);

?>
</body>

显示:

魔术方法

<body>
<?php
class Ren{
    public $name;
    public $sex;
    private $age;//public----private
    public function __set($name,$value){//$name变量名$value变量值
        if($name == "age"){
            if($value>=18&&$value<=50){
                $this->$name = $value;
            }
        }
        else{
            $this->$name = $value;
            }
    }
}
$r = new Ren();
$r->name = "张三";
$r->age = 20;//自动调用__set
var_dump($r)
?>
</body>

显示:

继承

概念:子类可以继承父类的一切

特点:单继承  (一个子类只能有一个父类,一个父类可以有多个子类)

<body>
<?php
class Ren{
	public $name;
	}
class China extends Ren{//该类(china类继承自ren类),继承使用的关键字:extends.
	}
	$c= new China();
	var_dump($c);
?>
</body>

显示:

china对象里面是存在$name这个成员变量的,这个成员变量就是继承自ren类里面的.

方法的重写

<body>
<?php
class Ren{
	function say(){
		echo "人在讲话";
		}
	}
class China extends Ren{
	function say(){
		echo "中国人在讲话";
		}
	}
	$c= new China();
	$c->say();	
?>
</body>

显示:

parent关键字

parent关键字在类里面代表的是父类,如果在子类重写的方法里面想要调用父类的方法,则需要使用关键字来调用.

<body>
<?php
class Ren{
	function say(){
		echo "人在讲话";
		}
	}
class China extends Ren{
	function say(){
		parent::say();
		echo "中国人在讲话";
		}
	}
	$c= new China();
	$c->say();	
?>
</body>

显示:

函数重写的名词:over ride

重载的名词:over load

重载目的:一个方法实现多个功能

重载的条件:

1方法名必须相同

2参数的个数不同

3参数的类型不同

多态

多态概念:当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,在调用该方法的时候所表现出的不同,我们称为多态.

运行多态

编译多态

编译多态就是重载

多态发生在编译的时候产生了不同就是重载

原文地址:https://www.cnblogs.com/xiaohaihuaihuai/p/8251901.html