为了账号安全,请及时绑定邮箱和手机立即绑定

接口和抽象类有什么区别?

接口和抽象类有什么区别?

接口和抽象类有什么区别?接口和抽象类有什么区别?
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

接口

接口是合同:写界面的人说,“嘿,我接受这样的事情,使用接口的人说“好吧,我写的这门课看起来是这样的".

接口是一个空的外壳。..只有方法的签名,这意味着方法没有主体。接口什么也做不了。只是一种模式。

例如(伪代码):

// I say all motor vehicles should look like this:interface MotorVehicle{
    void run();

    int getFuel();}// My team mate complies and writes vehicle looking that wayclass Car implements MotorVehicle{

    int fuel;

    void run()
    {
        print("Wrroooooooom");
    }


    int getFuel()
    {
        return this.fuel;
    }}

实现一个接口只消耗很少的CPU,因为它不是一个类,只是一堆名称,因此没有任何昂贵的查找。当它很重要的时候,它是很棒的,比如在嵌入式设备中。


抽象类

与接口不同,抽象类是类。它们的使用成本更高,因为当您继承它们时,需要进行查找。

抽象类看起来很像接口,但是它们有更多的东西:您可以为它们定义一个行为。更多的是一个人说,“这些类应该是那样的,他们有共同点,所以填空!”

例如:

// I say all motor vehicles should look like this:abstract class MotorVehicle{

    int fuel;

    // They ALL have fuel, so lets implement this for everybody.
    int getFuel()
    {
         return this.fuel;
    }

    // That can be very different, force them to provide their
    // own implementation.
    abstract void run();}// My teammate complies and writes vehicle looking that wayclass Car extends MotorVehicle{
    void run()
    {
        print("Wrroooooooom");
    }}

实施

虽然抽象类和接口应该是不同的概念,但实现有时会使该语句不正确。有时,他们甚至不是你所认为的那样。

在Java中,这个规则是强有力的,而在PHP中,接口是抽象类,没有声明任何方法。

在Python中,抽象类更像是从ABC模块中获得的编程技巧,实际上使用的是元类,因此也是类。在这种语言中,接口与鸭子类型更相关,它是调用描述符的约定和特殊方法(_Method_Method)之间的混合体。

与编程一样,在另一种语言中也有理论、实践和实践:-)


查看完整回答
反对 回复 2019-06-04
?
倚天杖

TA贡献1828条经验 获得超3个赞

之间的关键技术差异抽象类和一个界面是:

  • 抽象类常量、成员、方法存根(没有主体的方法)和定义的方法,而接口只能有常数方法存根.

  • 方法和抽象类的成员可以用任何能见度,而接口的所有方法必须定义为public(默认情况下,它们是公共的)。

  • 继承抽象类时,混凝土儿童班必须定义抽象方法虽然抽象类可以扩展另一个抽象类,但是不需要定义父类中的抽象方法。

  • 类似地,扩展另一个接口的接口是不负责实施方法从父接口。这是因为接口不能定义任何实现。

  • 子类只能扩展单个类(抽象或具体),而接口可以扩展,类可以扩展实现多个其他接口.

  • 子类可以使用相同或限制较少的能见度,而实现接口的类必须以完全相同的可见性(Public)定义方法。


查看完整回答
反对 回复 2019-06-04
  • 3 回答
  • 0 关注
  • 1195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信