PHP面向对象之接口 interface

类常量

  • 概念
    • 类常量是const常量
<?php
class Student {
	public const ADD= '幸福里1号'; 	//7.1以后才支持访问修饰符
	// const ADD='地址不详';
}
echo Student::ADD;
?> 
  • define常量和const常量的区别

    • const常量可以做类成员
    • define常量不可以做类成员
  • 常量和静态的属性的区别

    • 相同点:都在加载类的时候分配空间
    • 不同点:常量的值不可以更改,静态属性的值可以更改

接口 interface

  • 接口概念
    • 如果一个类中所有的方法是都是抽象方法,那么这个抽象类可以声明成接口
    • 接口是一个特殊的抽象类,接口中只能有抽象方法和常量
    • 接口中的抽象方法只能是public,可以省略,默认也是public的
    • 通过implements关键字来实现接口
    • 不能使用abstract和final来修饰接口中的抽象方法
<?php
<?php
//声明接口
interface IPerson {
	const ADD= '幸福里1号<br>';
	function fun1();
	function fun2();
}
//接口实现
class Student implements IPerson {
	public function fun1() {
		echo '幸福里的人!<br>';
	}
	public function fun2() {
		echo '幸福里的事!<br>';
	}
}
//访问接口中的常量
echo IPerson::ADD;
$stu= new Student();
$stu->fun1();
$stu->fun2();
?> 

接口的多重实现

  • 概念
    • 类不允许多重继承,但是接口允许多重实现
<?php
//声明接口
interface IPic1 {
	function fun1();
}
interface IPic2 {
	function fun2();
}
//接口实现
class Student implements IPic1,IPic2 {
	public function fun1() {
		echo '幸福里的人!<br>';
	}
	public function fun2() {
		echo '幸福里的事!<br>';
	}
}
//访问接口中的常量
$stu= new Student();
$stu->fun1();
$stu->fun2();
?> 
  • 说明
    • 在接口的多重实现中,如果有同名的方法,只要实现一次即可
    • 类可以继承的同时实现接口
<?php
//抽象类
abstract class Person {
	public const ADD= '幸福里1号';
	public abstract function setInfo();	
	public function getInfo() {
		echo static::ADD.'获取信息<br>';
	}
}
//声明接口
interface IPic1 {
	function fun1();
}
interface IPic2 {
	function fun2();
}
//接口实现
class Student extends Person implements IPic1,IPic2 {
	public const ADD= '幸福里2号';
	public function fun1() {
		echo '幸福里的人!<br>';
	}
	public function fun2() {
		echo '幸福里的事!<br>';
	}
	public function setInfo(){
		echo static::ADD.'信息设置<br>';
	}
}
//访问接口中的常量
$stu= new Student();
$stu->fun1();
$stu->fun2();
$stu->setInfo();
$stu->getInfo();
?> 
posted @ 2020-12-10 20:08  wing1377  阅读(115)  评论(0编辑  收藏  举报