interface Readable {
String read();
}
List<Readable> readables; // dunno what these actually are, but we know they have read();
for(Readable reader : readables)
System.out.println(reader.read());
为什么/什么时候使用接口?
一个例子……世界上所有的汽车都有相同的接口(方法)…AccelerationPedalIsOnTheRight()BrakePedalISOnTheLeft()。想象一下,每个汽车品牌都有这些不同于其他品牌的“方法”。宝马会把刹车安装在右边,本田会把刹车安装在左边。人们每次购买不同品牌的汽车时,都必须学习这些“方法”是如何工作的。这就是为什么在多个“地方”使用相同的界面是个好主意。" < / p >
接口为你做了什么(为什么有人会使用它)?
接口可以防止你犯“错误”(它保证所有实现特定接口的类都有接口中的方法)
// Methods inside this interface must be implemented in all classes which implement this interface.
interface IPersonService
{
public function Create($personObject);
}
class MySqlPerson implements IPersonService
{
public function Create($personObject)
{
// Create a new person in MySql database.
}
}
class MongoPerson implements IPersonService
{
public function Create($personObject)
{
// Mongo database creates a new person differently then MySQL does. But the code outside of this method doesn't care how a person will be added to the database, all it has to know is that the method Create() has 1 parameter (the person object).
}
}
它用于定义类中的required no of方法[如果你想加载html,那么id和name是必需的,所以在这种情况下接口包括setID和setName]。
接口严格强制类包含其中定义的所有方法。
只能在具有公共可访问性的接口中定义方法。
你也可以像类一样扩展接口。你可以在php中使用extends关键字扩展接口。
扩展多个接口。
如果两个接口共享同名的功能,则不能实现两个接口。它会抛出错误。
示例代码:
interface test{
public function A($i);
public function B($j = 20);
}
class xyz implements test{
public function A($a){
echo "CLASS A Value is ".$a;
}
public function B($b){
echo "CLASS B Value is ".$b;
}
}
$x = new xyz();
echo $x->A(11);
echo "<br/>";
echo $x->B(10);
< p > 2。接口中的所有方法必须在公共可见性中
范围。< / p >
< p > 3。一个类可以实现多个接口,同时它可以继承
interface abstract class
the code - abstract methods - abstract methods
- constants - constants
- concrete methods
- concrete variables
access modifiers
- public - public
- protected
- private
etc.
number of parents The same class can implement
more than 1 interface The child class can
inherit only from 1 abstract class