- <?php
- /**
- * 总结
- * 1、接口中只支持抽象方法(未被实现的方法)和常量(接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖)
- * 2、接口通过关键词interface定义,接口也可以继承
- * 3、类实现接口,而不是实例化,用关键词implements
- * 4、实现接口时,必须实现接口中的所有方法
- */
- interface Action
- {
- //接口中只支持抽象方法(未被实现的方法)和常量
- const TITLE = 'Action Interface';
- public function eat($food);
- public function drink($drink);
- }
- //接口也可以继承
- interface More extends Action
- {
- public function cry($reason);
- }
- //类Person实现了接口More,而不是实例化,用关键词implements
- class Person implements More
- {
- const CODE = 100;
- //实现接口时,必须实现接口中的所有抽象方法
- public function eat($food)
- {
- // TODO: Implement eat() method.
- echo 'person eat ' . $food;
- }
- public function drink($drink)
- {
- // TODO: Implement drink() method.
- echo 'person drink ' . $drink;
- }
- public function cry($reason)
- {
- // TODO: Implement cry() method.
- echo 'person crying because ' . $reason;
- }
- public function getTitle()
- {
- //接口常量和类常量的使用完全相同
- return self::TITLE;
- }
- public function getCode()
- {
- //接口常量和类常量的使用完全相同
- return self::CODE;
- }
- }
- $tom = new Person();
- $tom -> cry('he has no money!');
- //person crying because he has no money!
- echo $tom -> getTitle();
- //Action Interface
- echo $tom -> getCode();
- //100