面向对象学习笔记

abstract:抽象类或方法的关键字
注意事项:
一个类中至少有一个抽象方法
不允许有大括号
主要意义就是规范方法,要求必须按照抽象中的方法来写
继承抽象类的类,必须重载完全抽象类的方法
抽象类是不能被实例化的,因为本身没有意义


extends 继承的关键字

类中常用的关键字:
final 被定义的类不能被继承,该类的方法不能被继承,相当于一个锁的功能
self self::静态成员,相当于类名称::静态成员,和this是有区别的,$this访问类中的内容必须实例化,而self是直接可以访问类中的内容的,多用来访问静态成员、常量、其他自定义内容
static 定义静态成员
const 定义常量,常量一般大写且不使用$符号。


接口和抽象类的区别:
接口不用加abstract
方法必须使用public
对象属性必须为常量
创建:interface demo{
const NAEM;
function fun1();
function fun2();
}
普通类引用接口例子:
class mypc implements demo1,demo2,demo3()
抽象类引用接口列子:
abstract class mypc implements demo1,demo2,demo3()

继承父类引用接口并存例子:
class mypc extends yourspc implements demo,demo1,demo2,demo3()
接口与接口之间的继承:(用的较少)
interface demo1 extends demo2()
总结出一句话:单继承多接口,多接口多继承。

运算符:instanceof 测定一个给定的对象是否来自指定的对象,返回一个布尔类型的值。
实例:
interface myusb{
function type();
function alert();
}
class zip implements myusb{
function type(){
echo "2.0";
}
function alert(){
echo "正在检查……u盘驱动";
}
}
class mp3 implement myusb(){
function type(){
echo "1.0";
}
function alert(){
echo "正在检查……Mp3驱动";
}
}
class mypc{
function pcusb($what){
$what->type()."<br/>";
$what->alert();
}
}

$p=new mypc();
$p=new zip();
$p=new mp3();

$p->pcusb($zip);

对象描述的配置
方法名:__tostring();
我们可以直接打印对象句柄。
class my{
echo "显示";
}
$p=new my();
echo $p;

对象方法的异常处理
方法名:__call($funname,$arr_value)
class my{
function __call($n,$v){
echo "错误的方法名".$n;
echo "错误的参数名".Print_r($v);
}
}

克隆的对象应用
方法名:__clone();
关键字clone
function __clone(){
克隆的方法,该方法的值会影响克隆的值,不会影响被克隆的值
}


自动载入对象的方法
方法名:__autoload()
写在类的外面
引入类的例子:
function __autoload($name){
include("$name.php");
}

原文地址:https://www.cnblogs.com/mrcln/p/3900269.html