<?php
//PHP 抽象类 接口
/**
* @author bin
* date:14 / 6 / 8
*
*/
//接口
interface
Animal{
//public $name; 不允许
//public static $name; 不允许
const AGE =
100;//可以定义常量
public function voice();
public function
showColor();
}
interface Water{
public function showInfo();
}
class Dog_bobo
implements Animal,Water{
public function
__construct(){
self::showColor();
self::voice();
self::showInfo();
}
public
function showInfo(){
echo "<br>喝水不忘挖井人<br>";
}
public
function voice(){
echo "我的叫声是 汪汪汪~~~~";
}
public function
showColor(){
echo "我是一条黑色的狗";
}
}
class Cat_bobo implements Animal{
public function
__construct(){
self::showColor();
self::voice();
}
public
function voice(){
echo "我的叫声是 喵喵喵~~~~";
}
public function
showColor(){
echo "我是一条黑色的猫";
}
}
$dog = new Dog_bobo();
$Cat
= new Cat_bobo();
//实际上 抽象类 面向对象的重要思想,其实对多态的最好支持;
//接口中不能有非抽象的方法
//接口的方法 成员变量不能用private
修饰
// 抽象类 多态的表现
/* abstract class Person{
public
$name;
//加abstract 就可以不用写方法体
// 抽象类里定义的方法 它子类都必须重写定义的方法
abstract
protected function showName();//不能用private 修饰
//public function
yy();这是错误的
public function yy(){
echo
"抽象类也可以写非抽象方法";
}
//非抽象方法一定要写方法体
}
Person::yy();//无需实例化
直接这么调用。
class Jay extends Person{
public function showName(){
echo
"<br>我的名字叫做周杰伦<br>";
}
}
class Jolin extends Person{
//如果不重写showName
//Class Jolin contains 1
abstract method and must therefore be declared abstract or implement the
remaining methods (Person::showName)
public function showName(){
echo
"<br>我的名字叫做蔡依林<br>";
}
}
//$person = new Person();
// Fatal error: Cannot instantiate abstract
class Person in D:\wamp\www\php\oop\interface.php on line 33
//抽象类 不允许被实例化
$jay = new Jay();
$jay->showName();
$jolin = new
Jolin();
$jolin->showName(); */
?>