类的三大功能
序号 |
名称 |
说明 |
1 |
继承 |
extends 父类的二类成员自动成为子类的成员 |
2 |
重写 |
覆写与父类/基类同名的成员(属性, 方法) |
3 |
拓展 |
子类添加自身的方法来增加/扩展父类的功能 |
序号 |
封装 |
说明 |
1 |
public |
公开成员,默认值, 类外部, 类内部, 以及类的子类中(类的继承上下文环境中) |
2 |
proteced |
受保护的成员, 类外部禁止访问, 但是类的内部以及它的继承上下文中可以访问 |
3 |
private |
私有成员, 除了当前类可以访问, 类的外部以及类的继承上下文中都禁止访问 |
1.继承 : 子类继承基类的成员
<?php
// 基类 Demo
// public: 公开成员
// protected: 受保护的成员
//private: 私有成员
class Demo
{
//受保护成员 $name
protected $name = 'iphone11' ;
//受保护成员 $system
protected $system = 'ios';
//公开成员 $price
public $price = 5888 ;
//函数 items() 拼接类成员
public function items()
{
return "手机:{$this->name} , 系统:{$this->system} , 价格:{$this->price}";
}
}
//子类 US 继承 父类 Demo 里面的成员,
class US extends Demo
{
}
//对象 $acc
$acc = new US ;
echo $acc->items() ;
//输出结果
//手机:iphone11 , 系统:ios , 价格:5888
?>
2.重写与基类同名的成员
<?php
// 父类 Demo
// public: 公开成员
// protected: 受保护的成员
//private: 私有成员
class Demo
{
//受保护成员 $name
protected $name = 'iphone11' ;
//受保护成员 $system
protected $system = 'ios';
//公开成员 $price
public $price = 5888 ;
//函数 items() 拼接类成员
public function items()
{
return "手机:{$this->name} , 系统:{$this->system} , 价格:{$this->price}";
}
}
//子类 US 继承 父类 Demo 里面的成员,
//我们将在子类重写基类
class US extends Demo
{
// 属性价格重写 5888-> 6888
public $price = 6888 ;
//属性内容重写
public function items2()
{
return parent::items().",太贵了买不起~";
}
}
//对象 $acc
$acc = new US ;
echo $acc->items2() ;
//输出结果
//手机:iphone11 , 系统:ios , 价格:6888,太贵了买不起~
?>
3.拓展:子类添加自身的方法来增加
<?php
// 父类 Demo
// public: 公开成员
// protected: 受保护的成员
//private: 私有成员
class Demo
{
//受保护成员 $name
protected $name = 'iphone11' ;
//受保护成员 $system
protected $system = 'ios';
//公开成员 $price
public $price = 5888 ;
//函数 items() 拼接类成员
public function items()
{
return "手机:{$this->name} , 系统:{$this->system} , 价格:{$this->price}";
}
}
//子类 US 继承 父类 Demo 里面的成员,
//我们将在子类重写基类
class US extends Demo
{
//1.重写
// 属性价格重写 5888-> 6888
public $price = 6888 ;
//属性内容重写
public function items2()
{
return parent::items().",太贵了买不起~";
}
//2.拓展
//折扣 0.9
public $discount = 0.9 ;
public function items3()
{
return parent::items().",太贵了买不起~给打{$this->discount}折";
}
}
//对象 $acc
$acc = new US ;
echo $acc->items3() ;
//输出结果
//手机:iphone11 , 系统:ios , 价格:6888,太贵了买不起~给打0.9折?>
抽象类的作用与实现
<?php
// 抽象类 abstract Demo
abstract class Demo
{
protected $name = "张启灵";
protected $age = 26 ;
protected function flgure()
{
return "姓名:{$this->name},年龄:{$this->age}";
}
abstract protected function flgure2();
}
//抽象类不能直接实例化
abstract class OS extends Demo
{
protected $professional = '盗墓贼';
protected function flgure2()
{
return parent::flgure() . ",职业:{$this->professional}";
}
}
//最终用工作类实例化抽象类Demo
class USa extends OS
{
public function flgure2()
{
return parent::flgure2() ;
}
}
$abc = new USa ;
echo $abc->flgure2();
//输出结果
//姓名:张启灵,年龄:26,职业:盗墓贼
?>
接口的基本语法
<?php
// 接口关键字 :interface
interface Demo
{
const NATION = "中国";
public static function obj() ;
}
class OS implements Demo
{
public static $name = '吴邪';
public static function obj()
{
return self::$name . "国籍:" . Demo::NATION;
}
}
echo OS::obj() ;
//输出结果
//吴邪国籍:中国
?>
有很多地方非常不熟练,还得做很多实际操作才行,感谢老师和平台!