抽象

先来讲静态

静态的的分类和区别

1、普通成员

普通成员是属于对象的

2、静态成员

静态成员是属于类的

加上关键字static可以变成静态的

调用类中的变量,需要双冒号::

静态的不需要造新对象

普通方法里面可以调用静态成员

静态方法里面不能调用普通方法

self关键字在类里面代表该类,静态成员用的

例:

<?php

class Ren
{
    public $name="张三";
    public static $zhongzu; //静态成员
    
    //普通方法
    function Say()
    {
        echo self::$zhongzu."你好";     可以调用静态成员,关键字self
    }
    //静态方法
    static function Run()
    {
        echo $this->name;
    }
}

Ren::$zhongzu = "战斗民族";      静态调用类中变量
Ren::Run();

$r = new Ren();                 
$r->Say();
?>

抽象类:

比类更加抽象

不能被实例化,作为父类使用

关键字abstract写在类名前面

extends是继承的意思

<?php
abstract class DongWu            加关键字,就是一个抽象类
{
    public $name;
    public $age;
    
    function Run()
    {
        echo "跑";
    }
}

class Dog extends DongWu           子类继承父类的
{
    
}

$d = new Dog();
$d->Run();
以运算为例:
abstract class YunSuan           加关键字,成为抽象类
{
    public $a;
    public $b;
    
    function Suan()
    {
    }
}

class Jia extends YunSuan        子类继承父类
{
    function Suan()
    {
        return $this->a+$this->b;
    }
}

class Jian extends YunSuan        同样是子类继承父类,父类可以派生多个子类
{
    function Suan()
    {
        return $this->a-$this->b;
    }
}

class Cheng extends YunSuan
{
    function Suan()
    {
        return $this->a*$this->b;
    }    
}

$jia = new Cheng();
$jia->a=10;
$jia->b=5;
echo $jia->Suan();

?>

接口:

极度抽象的类

定义方式不用class  用imterface

命名规则一般用I开头

接口里面只声明函数名,没有函数体,不要写花括号

继承接口的关键字不是用extends,要用implements

接口里面的方法主要用来控制子类,必须实现该方法

例:

<?php
interface IUSB
{    
    function Read(); //接口里面只声明函数名
    function Write(); 
}

class ShuBiao implements IUSB
{
    function Read()
    {
        echo "鼠标插上了";
    }
    function Write()
    {
        echo "给鼠标传了数据";
    }
}

$s = new ShuBiao();
$s->Read();


//接口

//1.面向对象 interface
//2.API

?>
原文地址:https://www.cnblogs.com/qishuang/p/6183469.html