PHP面向对象解析

本文深入讲解面向对象编程的核心概念,包括类、对象、封装、继承和多态等关键要素,并探讨了构造方法、析构方法及魔术方法的作用。同时,介绍了PHP中面向对象的实现方式,如使用private、protected和public访问修饰符来控制类成员的访问级别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//面向对象
//一、什么是面向对象
//面向过程
//什么是对象
//一切皆是对象
//类
//由对象抽象画
//造类
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值