比方说,你有一个接口,IPerson,即定义了两个成员 - 姓名和性别:
public interface IPerson
{
function get name():String;
function set name(value:String):void;
function get gender:String;
function set gender(value:String):void;
}
...你有两个具体的类,女人和男人,这两者的实现IPerson接口。
public class Man implements IPerson
{
private var _name:String;
private var _gender:String;
public function Man(name:String, gender:String)
{
this.name = name;
this.gender = gender;
}
public function get name():String
{
return _name;
}
public function set name(value:String):void
{
_name = value;
}
public function get gender()
{
return _gender;
}
public function set gender(value:String):void
{
_gender = value;
}
}
和
public class Woman implements IPerson
{
private var _name:String;
private var _gender:String;
public function Woman(name:String, gender:String)
{
this.name = name;
this.gender = gender;
}
public function get name():String
{
return _name;
}
public function set name(value:String):void
{
_name = value;
}
public function get gender()
{
return _gender;
}
public function set gender(value:String):void
{
_gender = value;
}
}
然后,您最终可能会做这样的事情:
var crowdOfPeople:ArrayCollection = YourCrowdOfPeopleClass.getInstance();
for each (var p:IPerson in crowdOfPeople)
{
trace(p.name);
trace(p.gender);
}
...这就是说,作用于(在这种情况下,微量的属性)男人和女人,就好像它们是相同类型的对象,因为它们都符合IPerson接口的具体实现(即两者定义的名字和性别属性)。
这是在工作的polymorphism面向对象的原则 - 有时你会听到它为宗旨,以“面向接口编程,而不是实现。”希望有所帮助!