PHP面向对象解析

//面向对象
//一、什么是面向对象
//面向过程
//什么是对象
//一切皆是对象
//类
//由对象抽象画
//造类
class Ren
{
//构造方法
function __construct($n)
{
$this->name = $n;
}

//成员变量
public $name = "平阳";
private $sex = "男";
//成员方法
public function Speak(){
echo "正在说话";
echo $this->sex;
}
}

//this (这个对象)
//对象实例化
$r1 = new Ren("平阳");

//$r1->name = "张杰";

echo $r1->name;

$r2 = new Ren("张杰");
echo $r2->name;

//var_dump($py);
//var_dump($r1==$r2);
//
//访问修饰符:

//public 公共的,所有对象都可访问
//protected 受保护的,当前类和子类可以访问
//private 私有的,当前类可以访问(只有内部可以访问)

//构造方法(写不写都存在)
//类的初始化方法

//////////////////////////////////

//上午总结

class Renlei
{
// 构造函数/构造方法
function __construct($name, $sex)
{
$this->name = $name;
$this->sex = $sex;
}

// 析构函数/析构方法
function __destruct()
{
echo "这是析构方法";
}

private $name;
private $sex;
private $age;
private $mz;

// 双下划线开头的方法=>魔术方法
function __set($n, $v)
{
if ($n == "age") {
if ($v > 10 && $v < 50) {
$this->$n = $v;
}
}else{
$this->$n = $v;
}
}

function __get($n)
{
if($n == "sex"){
if($this->$n == "1"){
return "男";
}else{
return "女";
}
}
return $this->$n;
}

public function speak()
{
echo "正在说话";
}
}

$r3 = new Renlei("py", "1");
//$r3->__set("age", "9");
$r3->age="11";
echo $r3->sex;

echo "<pre>";
var_dump($r3);
echo "</pre>";
//面向对象(OOP)的三要素
//封装,继承,多态
//1.封装
//目的:让类更加安全
//步骤:1,把所有的成员变量私有化
// 2,对成员变量进行赋值
// 3,对成员变量进行限制
class Ren
{
private $name;
private $sex;

function __construct($n,$v)
{
if ($n=="name"){
$this->$n =$v;
}else{
$this->$n =$v;
}
}

function __toString()
{
// TODO: Implement __toString() method.
return"这是个方法";
}

function Speak(){
echo "正在说话";
}
}


$r1 = new Ren("name","张三");
echo $r1;

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


//override 重写
//overload 重载 编译多态

class Chinese extends Ren{
function spesk(){
// parent::speak();
echo "哈哈哈哈哈";
}
}
$r2 = new Chinese("name","李四");
$r2->spesk();

//不知道传了多少把它都变成一个数组
function abc(){
$arr = func_get_args();
}

//多态(运行多态)
//概念:当父类引用指向子类实例,子类里面对父类进行重写,父类引用调用该方法的时候表现不同的方法


//普通成员
//普通成员是属于对象的


//静态成员
//静态成员属于类

class Fenbi{
public $lenght = "10cm"; //普通成员 属于类 static
public static $color; //静态成员 属于类

function hua(){
echo $this->lenght;
echo self::$color;
}
static function hua2(){
echo self::$color;
}
}

$fb = new Fenbi();
$fb->hua();

Fenbi::$color = "red";
Fenbi::hua2();
$fb2 = new Fenbi();
$fb2->hua();

//关键字
//self 在类里面代表该类

//静态方法不能调用普通成员
//普通方法可以调用静态成员

//抽象
//关键字 abstract
//特点 不能被实例化只能被继承
//目的 为了派生子类 控制子类

//用于写基类
abstract class Renlei{
public $name;

function speak(){
echo "正在说话";
}
}


//接口 (面向对象的接口)
//极度抽象的类
//接口里面不能包含成员变量,只能包含成员方法
//成员方法没有函数体
//interface 命名大写I开头 implements
//实现接口的类,必须实现接口里面的所有方法


interface Iusb{
public function read();
public function write();
}
class mouse implements Iusb{
function read()
{
// TODO: Implement read() method.
}
function write()
{
// TODO: Implement write() method.
}
}

//接口(API) 区分
原文地址:https://www.cnblogs.com/little-rock/p/7676343.html