PHP抽象类和接口

抽象类
相对于一个类的模板,定义类的规范,细节

  • 抽象类不能实例化,只能通过继承的方式使用
  • 抽象类里面可以有已经实现的方法 但只要有一个抽象方法,这个类还是抽象类
  • 子类继承的抽象类方法必须全部实现
  • 子类方法参数必须与抽象类方法参数完全一致,可以增加默认参数
  • 抽象类中可有属性

语法格式
abstract class Classname

 <?php 
abstract class Db {
       abstract public function connect($data);
       abstract public function add();
       public function test(){
           echo "test";
       }
}

class Mysql extends Db{
	public function connect($data){
		echo $data;

	}
	public function add(){
		echo "add";
	}
   
}

$mysql = new Mysql();
$mysql->test();
$mysql->connect('mysql');
$mysql->add();

接口
接口可以理解为方法的模板,用于描述通用的方法

  • 每一个接口都是一个方法
  • 接口可实现可不实现 ,但是继承的接口必须全部实现
  • 接口里面的必须是权限修饰符必须是public
  • 接口可有类常量
  • 接口不能有属性,已经实现的方法

语法格式
interface methodName
实现接口
class ClassName implements method1,method2,methodn{}

<?php 
interface shower{
	const PI = 3.14;
	public function show($arg);
}
interface runer{
	public function run();
}

class Animal implements shower,runer{
    //implements接口必全部实现
	public function show($arg){
		echo $arg;
	}
	public function run(){
		echo Animal::PI."跑";
	}
}

$animal = new Animal();
$animal->show('23');
$animal->run();

在抽象类实现接口

<?php 

interface shower{
	const PI = 3.14;
	public function show($arg);
}
abstract class Test implements shower {
	abstract public function run();
}

class My extends Test{
	public function run(){
		echo "跑";
	}
	public function show($arg){
		echo $arg;
	}
}

$t = new My();
$t->run();
$t->show("显示");
发布了88 篇原创文章 · 获赞 2 · 访问量 2993

猜你喜欢

转载自blog.csdn.net/weixin_45143481/article/details/104560930