精华内容
下载资源
问答
  • java—抽象与接口区别
    2019-03-27 21:31:46

    抽象类与接口的区别

    |

    抽象类接口
    结构组成普通类+抽象方法全局常量+抽象方法
    权限任何权限只能使用public
    子类使用使用extends关键字继承抽象类使用implements关键字实现接口
    子类限制一个子类只能继承一个抽象类一个子类可以实现多个接口
    关系一个抽象类可以实现若干接口接口不能继承抽象类,但是一个接口可以继承多个父接口
    更多相关内容
  • 很多C#的初学者在编程时都容易把抽象类和接口搞混,本文就为大家从概念上讲解抽象类和接口区别: 一、抽象类: 含有abstract修饰符的class即为抽象类,抽象类是特殊的类,只是不能被实例化,可以创建一个变量,其...
  • 本文实例分析了PHP中抽象类、接口区别与选择。分享给大家供大家参考,具体如下: 区别: 1、对接口的使用是通过关键字implements。对抽象类的使用是通过关键字extends。当然接口也可以通过关键字extends继承。 2、...
  • 抽象类(abstract class)和接口(interface)的概念是面向对象设计中常用的概念, 也是比较容易混淆的概念. 在这里, 我提出一种区分它们的思路
  • 主要介绍了JDK8接口的默认与静态方法-接口与抽象类的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
  • 主要介绍了Java中接口抽象类的区别与相同之处,本文讲解了抽象类的概念、接口的概念、接口抽象类的区别与联系等内容,需要的朋友可以参考下
  • Java 抽象与接口区别是什么?1、抽象类可以提供某些方法的部分实现,而接口不可以;2、抽象类是单个继承机制,其子类不一定要实现父类中的所有没实现的方法,而接口一个类可以有多个接口,并且方法都要实现。理解...

    445b47bdf1c2645026931439f87673c3.png

    Java 抽象类与接口区别是什么?

    1、抽象类可以提供某些方法的部分实现,而接口不可以;

    2、抽象类是单个继承机制,其子类不一定要实现父类中的所有没实现的方法,而接口一个类可以有多个接口,并且方法都要实现。

    理解抽象类

    abstractclass和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非从abstractclass翻译而来,它表示的是一个抽象体,而abstractclass为Java语言中用于定义抽象类的一种方法,请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢?

    在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。

    在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。熟悉OCP的读者一定知道,为了能够实现面向对象设计的一个最核心的原则 OCP(Open-ClosedPrinciple),抽象类是其中的关键所在。推荐教程:《Java教程》

    展开全文
  • 主要介绍了java 中接口抽象类的区别与对比的相关资料,这里详细说明他们之家的区别,需要的朋友可以参考下
  • 在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
  • 主要介绍了java 抽象与接口区别介绍的相关资料,需要的朋友可以参考下
  • 主要介绍了详解java中接口与抽象类的区别的相关资料,希望通过本文能帮助到大家,让大家轻松理解掌握接口与抽象类的区别,需要的朋友可以参考下
  • 抽象接口区别

    万次阅读 多人点赞 2019-05-11 11:28:06
    在面向对象领域,抽象类主要用来进行类型隐藏。 abstract 关键字只能用于普通方法,不能用于 static 方法或者构造方法中。在抽象类中必须包含至少一个抽象方法,并且所有抽象方法不能有具体的实现,而应在它们的子类...

    在 Java 中,针对**抽象有两种实现方式:**一种是接口,一种是抽象类。很多读者对这两种实现方式比较困惑,到底是使用接口,还是使用抽象类呢?对于它们的选择甚至反映出对问题领域本质的理解,对设计意图的理解是否正确、合理?

    在面向对象的设计思想中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有描绘一个具体的对象,那么这样的类就是抽象类,抽象类是对那些看上去不同,但是本质上相同的具体概念的抽象,正是因为抽象的概念在问题领域没有对应的具体概念,所以抽象类是不能够实例化的。
    基本语法区别
    在 Java 中,接口和抽象类的定义语法是不一样的。这里以动物类为例来说明,其中定义接口的示意代码如下:

    public interface Animal
    {
        //所有动物都会吃
        public void eat();
        //所有动物都会飞
        public void fly();
    }
    
    定义抽象类的示意代码如下:
    public abstract class Animal
    {
        //所有动物都会吃
        public abstract void eat();
        //所有动物都会飞
        public void fly(){};
    }
    

    可以看到,在接口内只能是功能的定义,而抽象类中则可以包括功能的定义和功能的实现。在接口中,所有的属性肯定是 public、static 和 final,所有的方法都是 abstract,所以可以默认不写上述标识符;在抽象类中,既可以包含抽象的定义,也可以包含具体的实现方法。

    在具体的实现类上,接口和抽象类的实 现类定义方式也是不一样的,其中接口实现类的示意代码如下:

    public class concreteAnimal implements Animal
    {
        //所有动物都会吃
        public void eat(){}
        //所有动物都会飞
        public void fly(){}
    }
    

    抽象类的实现类示意代码如下:

    public class concreteAnimal extends Animal
    {
        //所有动物都会吃
        public void eat(){}
        //所有动物都会飞
        public void fly(){}
    }
    

    可以看到,在接口的实现类中使用 implements 关键字;而在抽象类的实现类中,则使用 extends 关键字。一个接口的实现类可以实现多个接口,而一个抽象类的实现类则只能实现一个抽象类。
    设计思想区别
    从前面抽象类的具体实现类的实现方式可以看出,其实在 Java 中,抽象类和具体实现类之间是一种继承关系,也就是说如果釆用抽象类的方式,则父类和子类在概念上应该是相同的。接口却不一样,如果采用接口的方式,则父类和子类在概念上不要求相同。接口只是抽取相互之间没有关系的类的共同特征,而不用关注类之间的关系,它可以使没有层次关系的类具有相同的行为。因此,可以这样说:抽象类是对一组具有相同属性和方法的逻辑上有关系的事物的一种抽象,而接口则是对一组具有相同属性和方法的逻辑上不相关的事物的一种抽象。

    仍然以前面动物类的设计为例来说明接口和抽象类关于设计思想的区别,该动物类默认所有的动物都具有吃的功能,其中定义接口的示意代码如下:

    public interface Animal
    {
        //所有动物都会吃
        public void eat();
    }
    

    定义抽象类的示意代码如下:

    public abstract class Animal
    {
        //所有动物都会吃
        public abstract void eat();
    }
    

    不管是实现接口,还是继承抽象类的具体动物,都具有吃的功能,具体的动物类的示意代码如下。

    接口实现类的示意代码如下:

    public class concreteAnimal implements Animal
    {
        //所有动物都会吃
        public void eat(){}
    }
    

    抽象类的实现类示意代码如下:

    public class concreteAnimal extends Animal
    {
        //所有动物都会吃
        public void eat(){}
    }
    

    当然,具体的动物类不光具有吃的功能,比如有些动物还会飞,而有些动物却会游泳,那么该如何设计这个抽象的动物类呢?可以别在接口和抽象类中增加飞的功能,其中定义接口的示意代码如下:

    public interface Animal
    {
        //所有动物都会吃
        public void eat();
        //所有动物都会飞
        public void fly();
    }
    

    定义抽象类的示意代码如下:

    public abstract class Animal
    {
        //所有动物都会吃
        public abstract void eat();
    
        //所有动物都会飞
        public void fly(){};
    }
    

    这样一来,不管是接口还是抽象类的实现类,都具有飞的功能,这显然不能满足要求,因为只有一部分动物会飞,而会飞的却不一定是动物,比如飞机也会飞。那该如何设计呢?有很多种方案,比如再设计一个动物的接口类,该接口具有飞的功能,示意代码如下:

    public interface AnimaiFly
    {
        //所有动物都会飞
        public void fly();
    }
    

    那些具体的动物类,如果有飞的功能的话,除了实现吃的接口外,再实现飞的接口,示意代码如下:

    public class concreteAnimal implements Animal,AnimaiFly
    {
        //所有动物都会吃
        public void eat(){}
        //动物会飞
        public void fly();
    }
    

    那些不需要飞的功能的具体动物类只实现具体吃的功能的接口即可。另外一种解决方案是再设计一个动物的抽象类,该抽象类具有飞的功能,示意代码如下:

    public abstract class AnimaiFly
    {
        //动物会飞
        public void fly();
    }
    

    但此时没有办法实现那些既有吃的功能,又有飞的功能的具体动物类。因为在 Java 中具体的实现类只能实现一个抽象类。一个折中的解决办法是,让这个具有飞的功能的抽象类,继承具有吃的功能的抽象类,示意代码如下:

    public abstract class AnimaiFly extends Animal
    {
        //动物会飞
        public void fly();
    }
    

    此时,对那些只需要吃的功能的具体动物类来说,继承 Animal 抽象类即可。对那些既有吃的功能又有飞的功能的具体动物类来说,则需要继承 AnimalFly 抽象类。

    但此时对客户端有一个问题,那就是不能针对所有的动物类都使用 Animal 抽象类来进行编程,因为 Animal 抽象类不具有飞的功能,这不符合面向对象的设计原则,因此这种解决方案其实是行不通的。

    还有另外一种解决方案,即具有吃的功能的抽象动物类用抽象类来实现,而具有飞的功能的类用接口实现;或者具有吃的功能的抽象动物类用接口来实现,而具有飞的功能的类用抽象类实现。

    具有吃的功能的抽象动物类用抽象类来实现,示意代码如下:

    public abstract class Animal
    {
        //所有动物都会吃
        public abstract void eat();
    }
    

    具有飞的功能的类用接口实现,示意代码如下:

    public interface AnimaiFly
    {
        //动物会飞
        public void fly();
    }
    

    既具有吃的功能又具有飞的功能的具体的动物类,则继承 Animal 动物抽象类,实现 AnimalFly 接口,示意代码如下:

    public class concreteAnimal extends Animal implements AnimaiFly
    {
        //所有动物都会吃
        public void eat(){}
        //动物会飞
        public void fly();
    }
    

    或者具有吃的功能的抽象动物类用接口来实现,示意代码如下:

    public interface Animal
    {
        //所有动物都会吃
        public abstract void eat();
    }
    

    具有飞的功能的类用抽象类实现,示意代码如下:

    public abstract class AnimaiFly
    {
        //动物会飞
        public void fly(){};
    }
    

    既具有吃的功能又具有飞的功能的具体的动物类,则实现 Animal 动物类接口,继承 AnimaiFly 抽象类,示意代码如下:

    public class concreteAnimal extends AnimaiFly implements Animal
    {
        //所有动物都会吃
        public void eat(){}
        //动物会飞
        public void fly();
    }
    

    这些解决方案有什么不同呢?再回过头来看接口和抽象类的区别:抽象类是对一组具有相同属性和方法的逻辑上有关系的事物的一种抽象,而接口则是对一组具有相同属性和方法的逻辑上不相关的事物的一种抽象,因此抽象类表示的是“is a”关系,接口表示的是“like a”关系。

    假设现在要研究的系统只是动物系统,如果设计人员认为对既具有吃的功能又具有飞的功能的具体的动物类来说,它和只具有吃的功能的动物一样,都是动物,是一组逻辑上有关系的事物,因此这里应该使用抽象类来抽象具有吃的功能的动物类,即继承 Animal 动物抽象类,实现 AnimalFly 接口。

    如果设计人员认为对既具有吃的功能,又具有飞的功能的具体的动物类来说,它和只具有飞的功能的动物一样,都是动物,是一组逻辑上有关系的事物,因此这里应该使用抽象类来抽象具有飞的功能的动物类,即实现 Animal 动物类接口,继承 AnimaiFly 抽象类。

    假设现在要研究的系统不只是动物系统,如果设计人员认为不管是吃的功能,还是飞的功能和动物类没有什么关系,因为飞机也会飞,人也会吃,则这里应该实现两个接口来分别抽象吃的功能和飞的功能,即除实现吃的 Animal 接口外,再实现飞的 AnimalFly 接口。

    从上面的分析可以看出,对于接口和抽象类的选择,反映出设计人员看待问题的不同角度,即抽象类用于一组相关的事物,表示的是“isa”的关系,而接口用于一组不相关的事物,表示的是“like a”的关系。

    展开全文
  • 主要介绍了PHP抽象与接口区别,结合实例形式分析了php抽象与接口的概念、区别、使用方法及相关操作注意事项,需要的朋友可以参考下
  • 抽象接口区别(通俗易懂)

    千次阅读 2018-04-12 21:48:49
    抽象接口区别: 1、概念不一样。接口是对动作的抽象抽象类是对本质的抽象抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的...

    抽象和接口的对比:

     

    抽象和接口的区别:

    1、概念不一样。接口是对动作的抽象,抽象类是对本质的抽象。

    抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它。所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。

    2、使用情况:
    a.抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高;
    b.抽象类可以有具体的方法 和属性,  接口只能有抽象方法和不可变常量;
    c.抽象类主要用来抽象类别,接口主要用来抽象功能;
    d.抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的;
    e.接口是设计的结果 ,抽象类是重构的结果;
     

    3、使用方向:

    a.当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口;

    b.如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它;

    展开全文
  • 今天小编就为大家分享一篇关于PHP抽象与接口区别详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 主要给大家介绍了关于java中抽象类、抽象方法、接口与实现接口的相关资料,文中通过示例代码将四者介绍的非常详细,并且简单介绍了抽象类和接口的区别,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
  • 抽象与接口区别

    2017-12-20 10:45:41
    抽象与接口区别
  • Java面试题(六) - 抽象与接口区别

    千次阅读 多人点赞 2019-03-21 13:33:53
    抽象与接口区别,这是一个经常被问到面试题,区别主要有以下几点,我们可以从几个方面进行分析: (一) 继承方面: (1) 抽象类只能单继承;接口可以多实现 (二) 成员属性方面: (1) 抽象类中可以有普通属性,也...
  • java中抽象与接口区别

    千次阅读 2019-03-08 20:39:50
    抽象类和接口都包含类可以由子类继承实现的成员,但抽象类是对根源的抽象,而接口上是对动作的抽象抽象类的功能要远超过接口,那为什么还要使用接口呢?这主要是由于定义抽象类的代价高...抽象类和接口区别主要...
  • java抽象与接口区别

    2012-07-19 02:22:51
    深入浅出的说明java抽象与接口区别,让初学者更好的理解java抽象与接口的概念
  • 接口与抽象区别

    2014-09-15 13:52:49
    主要介绍接口与抽象类的区别,为那些困惑的人指点迷津。
  • 接口抽象类的区别(绝对经典)

    万次阅读 多人点赞 2020-08-12 17:40:36
    A:成员的区别 抽象类: 构造方法:有构造方法,用于子类实例化使用。...B:类和接口的关系区别类: 继承关系,只能单继承。可以多层继承。 类与接口: 实现关系,可以单实现,也可以多实现。 类还可以在继承一个类的
  • PAGE / NUMPAGES 很多人在学习抽象类和接口时弄不明白两者之间的区别弄不明白的原因它们之间有太多的相似性那么本文着重介绍两者之间的区别以让大家弄清楚C#中抽象类和接口到底有什么区别它们主要用在什么场合 1抽象...
  • 抽象方法和接口区别

    千次阅读 2019-09-11 11:19:08
    接口抽象方法的区别: 1、抽象类可以有构造方法,接口中不能有构造方法。 2、抽象类中可以有普通成员变量,接口中没有普通成员变量 3、抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有...
  • 接口抽象类的区别

    千次阅读 2020-01-27 23:08:15
    接口关键字:interface 接口定义了你要实现某种功能的规范, 接口成员 1、接口的方法都是抽象方法,默认使用public abstract 修饰,不能修改...接口不能被创建对象,接口中的抽象方法由实现类实现。实现类使用imple...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 980,224
精华内容 392,089
关键字:

抽象与接口的区别

友情链接: xiaobo.rar