我已经看过几次提到这个,我不清楚这是什么意思.你何时以及为何会这样做?
我知道接口有什么作用,但事实上我不清楚这一点让我觉得我错过了正确使用它们.
如果你这样做是这样的:
IInterface classRef = new ObjectWhatever()
Run Code Online (Sandbox Code Playgroud)
你可以使用任何实现的类IInterface吗?你什么时候需要这样做?我唯一能想到的是,如果你有一个方法,你不确定除了实现之外将传递什么对象IInterface.我想不出你需要多久做一次.
另外,你怎么能写一个接受实现接口的对象的方法?那可能吗?
接口的原因真正让我无所适从.根据我的理解,这是一种解决C#中不存在的不存在的多继承的问题(或者我被告知).
我所看到的是,你预先定义了一些成员和函数,然后必须再次在类中重新定义.从而使界面变得多余.它只是感觉像句法...好吧,垃圾对我来说(请不要冒犯意思.垃圾就像无用的东西).
在下面给出的示例中,从堆栈溢出的不同C#接口线程中获取,我只是创建一个名为Pizza而不是接口的基类.
简单示例(取自不同的堆栈溢出贡献)
public interface IPizza
{
public void Order();
}
public class PepperoniPizza : IPizza
{
public void Order()
{
//Order Pepperoni pizza
}
}
public class HawaiiPizza : IPizza
{
public void Order()
{
//Order HawaiiPizza
}
}
Run Code Online (Sandbox Code Playgroud) 所以我想说我有这个界面:
public interface IBox
{
public void setSize(int size);
public int getSize();
public int getArea();
//...and so on
}
Run Code Online (Sandbox Code Playgroud)
我有一个实现它的类:
public class Rectangle implements IBox
{
private int size;
//Methods here
}
Run Code Online (Sandbox Code Playgroud)
如果我想使用IBox接口,我实际上无法创建它的实例,方式如下:
public static void main(String args[])
{
Ibox myBox=new Ibox();
}
Run Code Online (Sandbox Code Playgroud)
对?所以我实际上必须这样做:
public static void main(String args[])
{
Rectangle myBox=new Rectangle();
}
Run Code Online (Sandbox Code Playgroud)
如果这是真的,那么接口的唯一目的是确保实现接口的类如接口所描述的那样在其中获得了正确的方法?或者是否还有其他任何接口用途?
编写课程时界面的目的是什么?
这是我在网上看到的一个例子.
<?php
interface Chargeable {
public function getPrice();
}
class Employee implements Chargeable {
protected $price;
public function getPrice() {
return $this->price;
}
}
$product = new Employee();
?>
Run Code Online (Sandbox Code Playgroud) 在用PHP编写对象时,我总是很难理解Interfaces的真正价值(可能是我想象的其他语言)
根据我的理解,你使用一个Interface来强制或保证当一个类使用Interface该类时,该类将具有在Interface该类内部定义的方法.
因此,根据我对使用它们的小知识,这并不意味着Interface在定义超过1个需要这些方法的类时,您只会找到一个有益的东西吗?
更清楚的是,如果我有一个类做了一件事而没有其他类需要做那样的事情,那么Interface在那个类上使用它是没有意义的吗?
所以你不会Interface在每个课上使用一个对吗?
PS)如果你投票这个问题,exact duplicate那么你没有阅读问题,只有标题,因为我已经阅读了大部分类似的问题
我的问题是:在PHP中,接口对于自己构建网站应用程序的开发人员真的很有用吗?是不是提供界面提供的所有东西的抽象类?
如果一个接口只是一个"契约",那么开发人员是否意识到该类应该实现的东西?
我能想到的唯一一个好处就是一个类可以实现多个接口,但是当你知道一个类应该实现的所有东西时,这又是多么有用.你只是强迫自己实现这些方法.
正如你所知,当我真正理解为什么界面有用时,我仍然在等待那个A-HA时刻.
包装它并简单说明:何时应该使用接口,为什么不使用抽象类呢?
好的,我认为接口是一种强制对象实现一定功能的方法,而不必使用继承.有点像合同.我半看到了他们的观点.
但是,如果您在界面中拥有的是:
public interface animal{
void eat(object food);
}
Run Code Online (Sandbox Code Playgroud)
并且没有这样的实现,那么每次使用你的界面的人都必须从头开始编写它.
如果你要创建一些所有实现这些功能的类,并且实现只是略有不同,那将是一项艰苦的工作.
任何帮助我解决这个问题都是值得赞赏的,因为我知道这非常重要.
可能重复:
PHP中的接口有什么意义?
我为什么要在PHP中创建接口?
据我所知,接口用于描述实现它们的类.这些类必须至少包含这些函数.如果您正在建立其他人的工作,或者必须保持一定程度的兼容性,这一切都很好.但在更简单的情况下呢?
我知道,对于编译的编程语言,比如C++,接口的使用可以提高编译速度,但是PHP呢?这个优势似乎消失了,因为PHP是被解释的,而不是被编译的.