Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:近期会将类与对象细节技术重讲, 注意看公告
理解课件,将类与对象一步步的简化写法和重点内容重写,重在理解。
1、类与对象比较抽象,不像之前的知识点,代码很直观好理解。这次类与对象视频看了3遍,过程中去恶补了下“面向对象编程”知识,开始抽象的概念终于能够具体理解并实操;
2、简单说面向对象就是为了代码高复用、灵活应对需求,继承、扩展和trait方法创造了面向对象的优点;
3、感觉到了这里我已经不是“hello world”初级阶段了,现在我是面向对象编程的程序员,逼格一下子就上来了!
1.原生写法
<?php
//面向对象编程:三个步骤
//1.创建类
class Phone1
{
//2.添加类成员
//变量叫属性,函数叫方法
//2.1创建属性
public $mi = '小米手机';
//2.2创建方法
public function getMi()
{
//要访问当前类中的属性需要先实例化
$obj = new Phone1();
return $obj->mi;
}
}
//类必须实例化之后才可以访问里面的成员
//3.访问类成员
$obj = new Phone1();
echo $obj->mi;
echo '<br>';
echo $obj->getMi();
//可以简化代码
?>
<?php
//1.创建类
class CPU
{
//实现在类方法中共享对象
//2.添加类成员
//2.1创建属性
public $amd = '锐龙';
//2.2创建方法
public function getAmd()
{
//$this:当前类的实例(伪对象/伪变量)
return $this->amd;
}
public function getIntel()
{
//实例共享
return $this->amd;
}
}
//3.访问类成员
$obj = new CPU();
//访问成员,使用成员指向符:->
echo $obj->amd;
echo '<br>';
echo $obj->getAmd();
echo '<br>';
echo $obj->getIntel();
?>
<?php
//1.创建类
class CPU1
{
//2.添加类成员
//2.1创建属性
public $A12;
//2.2创建方法
public function getA12()
{
return $this->A12;
}
//2.3构造方法(可将类成员初始化,当前类被实例化时自动调用)
public function __construct($A12="A12处理器")
{
//成员的初始化
$this->A12 = $A12;
}
}
//3.访问类成员
$obj = new CPU1();
//访问成员
echo $obj->A12;
echo '<br>';
echo $obj->getA12();
?>
<?php
//1.创建类
//public:属于公共成员,类中、类外、子类均可访问
//private:属于私有成员,只属于当前,只许在当前类中访问,不允许在类的外部及子类中访问
//protected: 属于受保护的成员, 与private声明的成员一样,不允许在类外部访问, 但是可以在子类中访问
class CPU2
{
//2.添加类成员
//2.1创建属性
private $A12;
//2.2创建方法
public function getA12()
{
return $this->A12;
}
//2.3构造方法(可将类成员初始化,当前类被实例化时自动调用)
public function __construct($A12="A12处理器")
{
//成员的初始化
$this->A12 = $A12;
}
}
//3.访问类成员
$obj = new CPU2();
//访问成员
//echo $obj->A12;
echo '<br>';
echo $obj->getA12();
?>
<?php
//类的继承:extends
//1.创建类
class CPU3
{
//2.添加类成员
//2.1创建属性
public $A12;
//2.2创建方法
public function getA12()
{
return $this->A12;
}
//2.3构造方法(可将类成员初始化,当前类被实例化时自动调用)
public function __construct($A12="A12处理器")
{
//成员的初始化
$this->A12 = $A12;
}
}
//Son类继承自CPU3
class Son extends CPU3
{
//2.继承父类成员
//2.1继承属性
//类会将父类中所有满足访问条件的成员全部继承过来
//2.2继承方法,可扩展
public function getA12()
{
//parent::引用当前父类,用于访问父类中的成员
return parent::getA12()."价格:". $this->price;
}
//2.3创建只属于子类的属性
public $price;
//2.4构造方法(可将类成员初始化,当前类被实例化时自动调用)
public function __construct($price,$A12="A12处理器")
{
parent::__construct($A12="A12处理器");
//自有属性的初始化
$this->price = $price;
}
}
//3.访问类成员
$obj = new CPU3();
//实例化子类
$son = new Son('$100','A12处理器');
echo $son->getA12();
?>
<?php
//trait:改变了单继承的模式,实现了代码复用
//声明一个trait类,使用的是类的语法,不是类,不能实例化
trait Company
{
public function getA12()
{
return '名称:'. $this->A12 .'厂商:' . $this->company;
}
}
//1.创建类
class CPU5
{
use Company;
//2.添加类成员
//2.1创建属性
public $A12;
public $company;
//2.2调用trait方法
//2.3构造方法(可将类成员初始化,当前类被实例化时自动调用)
public function __construct($A12,$company)
{
//成员的初始化
$this->A12 = $A12;
$this->company = $company;
}
}
//Son类继承自CPU3
class Son extends CPU5
{
//2.继承父类成员
//2.1继承属性
//类会将父类中所有满足访问条件的成员全部继承过来
//2.2创建只属于子类的属性
public $speed;
//2.3重写父类构造方法
public function __construct($A12,$company,$speed)
{
parent::__construct($A12,$company);
//自有属性的初始化
$this->speed = $speed;
}
//2.4重写父类方法
public function getA12()
{
return parent::getA12().'速度:'. $this->speed;
}
}
//3.访问类成员
//实例化子类
$son = new Son("A12处理器","苹果",'1200Hz');
echo $son->getA12();
?>