一文搞懂PHP类和对象、抽象类、接口-php教程

资源魔 31 0

类以及工具:形象类、接口

形象类以及接口:形象类(Abstract Class)与接口(Interface)都是不克不及被实例化的非凡类。

形象类:

形象类里的形象办法都是不详细完成的空办法。形象类能够用来为子类设置性能界说,以是形象类强迫开发职员只能从特定的父类

来承继,而后正在承继的子类中实现所需的详细性能。

界说形象类的语法格局以下:

abstract class 类称号{
  //形象类的成员变量列表
  abstract function 成员办法1([参数1],[参数2],……);
  abstract function 成员办法2([参数1],[参数2],……);
  //其余代码
}

形象类与一般类类似,也具备成员属性以及成员办法,区分正在于形象类不克不及被实例化。

上面界说一个简略、完好的形象类:

abstract class MyClass{ //界说形象类
  abstract protected function myFunction($arg); //界说形象办法
}

PS:正在形象类的界说中必需至多含有一个应用要害字abstract润饰而且不任何完成的形象办法。

形象类的完成进程:

正在形象类中,不只能够界说形象办法,还能够像一般类同样,界说一些可以实现指定性能的成员办法,当子类承继形象类后,就能够

间接援用这些可以实现指定性能的成员办法。

class 子类称号 extends 形象类称号{
  //子类的成员变量列表
  
  function 形象办法称号([参数1],[参数2],……){
      //形象办法的详细完成
  }
  //其余代码
 }

PS:当某个类要承继于形象类时,必需蕴含该形象类中界说的一切办法,不然正在运转的时分犯错。

上面是一个完成形象类的例子:

abstract class Study{
  abstract function printStudy($name,$lang); //界说一个形象办法
}
 
class OneStudy extends Study { //界说子类承继于父类
  function printStudy($name,$lang){ //形象办法的详细完成
      echo $name."在整顿".$lang."……";
  }
 }
 
class TwoStudy extends Study {
  function printStudy($name,$lang){
      echo $name."在整顿".$lang."……";
    }
}
  $first=new OneStudy();
  $first->printStudy("年夜兵","PHP根底常识");
  echo "";
  $second=new TwoStudy();
  $second->printStudy("小兵","SEO根底常识");

该顺序运转后果为:

年夜兵在整顿PHP根底常识……

小兵在整顿SEO根底常识……

界说接口:

接口是一组成员办法申明的荟萃,它只蕴含一些空的成员办法或许一些类常量,这些空的成员办法将由完成该接口的类去详细完成。

界说接口需求应用要害字 interface, 语法格局以下:

interface 接口称号{
  //类常量列表
  function 成员办法1([参数1],[参数2],……);
  function 成员办法2([参数1],[参数2],……);
  //其余代码
}

因为接口不克不及被实例化,以是接口没有存正在结构办法以及折构办法,它只要要给出一组要完成的成员办法的申明便可。

上面界说一个简略、完好的接口:

interface class MyClass{ //界说接口
  public function myFunction($arg); //界说办法
}

接口的完成进程:

与类类似,接口也能够承继。接口能够承继多个接口,然而接口不克不及承继类。完成接口要应用要害字 implements.

正在应用类来完成一个接口时,必需至多蕴含接口中界说的一切办法,不然正在运转时犯错。

上面是一个完成接口的例子: 

interface IName{ //界说接口IName
  function setName($name);
  function getName();
  }
  interface IAge{ //界说接口IAge
  function setAge($age);
  function getAge();
  }
  class DaBing implements IName,IAge{ //界说完成接口的类
  private $name;
  private $age;
  function setName($name){
  $this->name=$name;
  }
  function getName(){
  echo "姓名:".$this->name." ";
  }
  function setAge($age){
  $this->age=$age;
  }
  function getAge(){
  echo "春秋:".$this->age;
  }
  }
  $obj=new DaBing();
  $obj->setName("年夜兵");
  $obj->getName();
  $obj->setAge(25);
  $obj->getAge();

该顺序运转后果为:

姓名:年夜兵 春秋:25

形象类与接口的区分:

对接口的应用是经过要害字 implements 来完成的。对形象类的操作是经过承继要害字 extends 来完成的。

接口不数据成员,然而形象类无数据成员,形象类能够完成数据的关闭。

接口不结构函数,形象类能够有结构函数。

接口中的办法都是 public 类型的,而形象类中的办法能够应用 private、protected 或许 public 润饰。

一个类能够同时完成多个接口,一个类却只能承继于一个形象类。

正在接口中不成以有成员办法的完成代码,正在形象类中能够有成员办法的完成代码。

PS:正在使用中,假如需求给某一个类增加更多的行为,这时候能够界说一个接口把这些行为组合正在一同。假如需求对某一个事物的数据以及行为进行重用,应该界说一个形象类封装这些变量以及函数。


以上就是一文搞懂PHP类以及工具、形象类、接口的具体内容,更多请存眷资源魔其它相干文章!

标签: 接口 php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!