接口如何确定调用对应类的实现方法?
问题解答:接口如何确定调用对应类的方法实现
这核心是多态(动态绑定)机制在起作用,接口本身仅承担「契约约束」的角色,具体调用哪个类的实现完全由传入的实际对象实例决定。
具体拆解过程:
接口的本质是契约
VehicalInterface只是定义了一条规则:所有实现它的类必须包含startEngine()方法,它自身没有任何方法实现,也不负责决定调用哪个类的方法。创建具体实例
在游戏场景中,当用户需要启动摩托车时,你会先创建一个Bike类的实例:$motorcycle = new Bike();传入实例到控制器方法
把这个Bike实例传给VehicleController的start方法:$controller = new VehicleController(); $controller->start($motorcycle);运行时动态绑定
控制器方法里的VehicalInterface $vehical是类型提示,它仅要求传入的对象必须实现该接口,不限制具体是Car还是Bike实例。当执行$vehical->startEngine();时,PHP会在运行时识别变量指向的实际对象类型——这里$vehical实际指向Bike实例,因此会自动调用Bike类中实现的startEngine()方法。
简言之:接口只保证传入的对象具备指定方法,而具体执行哪个类的方法,完全取决于你传入的是哪个类的对象。
内容的提问来源于stack exchange,提问作者Umar Nazir
相关产品推荐
相关产品推荐

