封装,继承,多态,静态和接口
Posted __逆光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装,继承,多态,静态和接口相关的知识,希望对你有一定的参考价值。
面对对象三大特性
封装
目的:让类更安全
做法:成员变量变为私有的,通过方法来间接操作成员变量,在方法里面加限制条件
继承
概念:子类可以继承父类的一切
方法重写:在子类里面对父类的方法进行重写
特点:单继承:一个子类只能有一个父类,一个父类可以派生出多个子类
override:重写
overload:重载,编译多态
class Ren
{
public $name;
function say()
{
echo $this->name."正在讲话!";
}
}
class China extends Ren
{
public $dizhi;
function say()
{
parent::say(); //调用父类的say方法
echo "中国人说话";
}
}
class America extends Ren
{
function say()
{
echo "speak";
}
}
$c = new China();
$c->say();
$a = new America();
$a->say();
多态(运行多态)
概念:当父类引用指向子类实例,由于子类里面对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同状态。
条件:1.必须发生在继承下
2.必须重写父类方法
3.父类引用调用该方法
如果一个方法需要一个父类参数,可以给一个子类对象
继承
子类可以继承父类的一切
特点:单继承
函数的重写
多态
当父类引用指向子类实例,由于子类对父类的方法进行了重写,父类引用在调用该方法的时候表现出的不同
如果一个方法需要一个父类的参数,可以给一个子类对象
静态
普通成员
普通成员是属于对象的
静态成员
静态成员属于类的
关键字:static
self关键字:在类里面代表该类
在静态方法里面不能调用普通成员
在普通方法里面能够调用静态成员
class FenBi
{
public $length; 粉笔的长度
public static $color; 粉笔的颜色
static function show()
{
echo "粉笔颜色是:".self::$color;
}
function XianShi()
{
echo "显示:".self::$color;
}
}
$f = new FenBi(); 先造一个对象
$f->length; 用对象去调用普通成员
FenBi::$color = "红色"; 使用类名调用静态成员
FenBi::show();
$f->XianShi();
抽象
抽象类:关键字abstract
特点:不能被实例化,只能被继承
目的:为了派生子类,控制子类
abstract class Dog
{
public $name;
function Jiao()
{
echo "汪汪";
}
}
class JinMao extends Dog
{
}
$d = new Dog();
接口
极度抽象的类
接口里面不能包含成员变量,只能包含成员方法
成员方法可以没有函数体
接口关键字:interface
实现接口的类,必须实现接口里面的所有方法
interface IUSB
{
function read(); 读的方法
function write(); 写的方法
}
鼠标的驱动类
class Mouse implements IUSB
{
function read()
{
echo "鼠标点击了";
}
function write()
{
echo "给鼠标一个指令";
}
}
键盘的驱动类
class JianPan implements IUSB
{
function read()
{
echo "键盘输入了内容";
}
function write()
{
echo "给键盘指令";
}
}
$m = new Mouse();
$m->write();
$j = new JianPan();
$j->read();
接口:API
以上是关于封装,继承,多态,静态和接口的主要内容,如果未能解决你的问题,请参考以下文章
day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态