精华内容
下载资源
问答
  • 今天复习知识点的时候发现这两个语言有不少互通之处,就先总结一点从一般定义上来看C++抽象类:拥有纯虚函数的类是抽象类JAVA抽象类:使用abstract定义或着含有抽象方法的类是抽象类从定义上看,纯虚函数抽象方法...

    今天复习知识点的时候发现这两个语言有不少互通之处,就先总结一点

    从一般定义上来看

    C++抽象类:拥有纯虚函数的类是抽象类

    JAVA抽象类:使用abstract定义或着含有抽象方法的类是抽象类

    从定义上看,纯虚函数和抽象方法非常相像,纯虚函数声明为virtual type funcname()=0;抽象函数声明为public abstract type funcname();可以看出它们都没有定义。前者没有定义函数体,后者没有定义方法体。一般与C++有关的书会这样解释:这是因为在某些情况下不能给具出明确意义的函数定义,而在派生类中又需要实现不同功能,所以这样声明。

    所以抽象类不能被实例化的原因可以总结为:它们什么都没有(在java中用abstract定义的抽象类可以没有抽象方法),就只是一个提醒你需要去完成的声明,所以只能被继承实现,所以一旦被继承,除非套娃,依旧让继承类作为抽象类,否则继承类一定要去实现它。

    接口同样如此。

    C++接口就是用抽象类实现的

    Java接口则有专门的interface声明,它是一个抽象方法的集合,接口中的方法是隐式抽象类型

    还是上面的套路,定义接口就是为了封装实现它,而java更是做出了规范,不用专门写abstract,默认就是抽象的,而且一个类一旦继承接口,就必须实现其中所有方法,除非它是(套娃)抽象类,但是早晚得用一个类实现它们。

    展开全文
  • 抽象类和接口对比

    2013-03-14 10:37:00
    抽象类相关 抽象类:又叫抽象基类:在定义的时候使用 abstract 关键字标记的普通类。他可包含一般类所包含的所...接下来我们先看下抽象类和抽象方法在使用需要注意的地方: 1,抽象类需要用abstract关键字标记 ...

    抽象类相关

    抽象类:又叫抽象基类:在定义的时候使用 abstract 关键字标记的普通类。他可包含一般类所包含的所具有的特性,例如字段,属性,方法,另外还包含一个很特殊的方法,叫抽象方法(没有实现的方法,而派生于该类的类就必须实现该方法),而且不能被实例化,主要用在类的定义和部分实现等方面。

    接下来我们先看下抽象类和抽象方法在使用需要注意的地方:

    1,抽象类需要用abstract关键字标记

    2,抽象方法不能有任何的方法实现(连{}都不能有)

    3,抽象成员必须包含在(隶属于)抽象类中。

    4,由于抽象成员没有任何实现,所以子类必须将抽象成员重写。

    5.抽象类不能实例化,所以抽象类的存在就是为了让子类继承。

    6,抽象类中既可以包括抽象成员,也可以包括具有代码实现的成员。,

    7,抽象方法不能用static修饰。

    看过了抽象类和抽象方法后,我们接着来看下与接口相关的内容

    接口相关:

    接口:接口是一种特殊的抽象类,用interface关键字来标记接口类型,它可以包含实例/静态方法,任何实现该接口的类就必须按照接口的定义实现这些方法。

    下面我们来看下使用接口要注意哪些地方:

    1, 接口是一种规范,为了实现多态而存在

    2, 接口不能被实例化

    3, 接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符为public,不能修改(默认为public)

    4, 接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)

    5, 接口中只能有方法、属性、所引器和事件,不能有“字段”

    6, 接口与接口之间可以继承,并且可以多继承

    7, 实现接口的子类必须实现该接口的全部成员。

    8, 一个类可以同时继承一个类并实现多个接口,如果一个类同时继承了父类A,并且实现了接口IA,那么语法上A必须写在IA的前面。Class Test:A,IA{},因为类是单继承的。

    9, 当一个抽象类实现接口的时候,如果不想把接口中的成员实现,可以把该成员实现为abstract

    10, 显示实现接口,只能通过接口变量来调用(因为显示实现接口后成员为private)

    看过了抽象类和接口各自的特点后,下面我们就来看下抽象类和接口的区别:

    第一:接口定义类的公共行为,抽象类定义类的公共实现

    第二:一个类只能继承自一个类(抽象类),但是可以同时实现多个接口

    第三:接口中不能有实现,抽象类中既可以有未实现的成员,也可以有实现的成员

    第四:接口中未实现的方法必须在子类中实现,抽象类中未实现的成员必须在子类中重写

    第五:好的接口定义应该是具有专一功能性的,而不是多功能的,否则会造成接口污染。如果一个类只是实现了这个接口中的一个功能,而不得不去实现接口中的其他方法,就叫接口污染。

    看过了抽象类和接口的区别后,我们接着来看下抽象类和接口的应用场合。

    什么时候使用抽象类,什么时候使用接口?

    首先我们强调下:抽象类主要用于关系密切的对象;而且接口适合为不相关的类提供通用功能。

    例如:飞机会飞,鸟也会飞,他们都继承了同一个接口”飞”;但是“波音747”属于飞机抽象类,大雁属于鸟抽象类。

    最后用一张简单的表格对两者进行一个对比:

     

    转载于:https://www.cnblogs.com/nofliu/archive/2013/03/14/2958893.html

    展开全文
  • 抽象类与接口对比

    2020-06-21 21:24:51
    抽象类 ...5.实例化一般指new一个对象,所以抽象类不能实例化(类都有构造方法,但是抽象类的构造方法不能new) 接口 1.在接口中只有方法的声明,没有方法体。,并且抽象方法可是没有方法体的

    抽象类

    • 1.抽象类中可以构造方法(因为抽象类中可以有一些变量,这些变量需要通过构造方法来初始化)
    • 2.抽象类中可以存在普通属性,方法,静态属性和方法。
    • 3.如果一个类中有一个抽象方法,那么当前类一定是抽象类;反之抽象类中不一定有抽象方法。
    • 4.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。
    • 5.实例化一般指new一个对象,所以抽象类不能实例化(类都有构造方法,但是抽象类的构造方法不能new)

    接口

    • 1.在接口中只有方法的声明,没有方法体。,并且抽象方法可是没有方法体的(也就是没有大括号{}),JDK8中,接口中的方法可以被default和static修饰,但是!!!被修饰的方法必须有方法体
    • 2.在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final
    • 3.接口中方法的默认修饰符时public abstract(意味着接口中的方法都是抽象方法且是public的)。
    • 4.接口中没有构造方法,也不能实例化接口的对象。
    • 5.接口可以实现多继承
    • 6.接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。

    注:一个抽象类可以是public、private、protected、default,而接口只有public;
    一个抽象类中的方法可以是public、private、protected、default,接口中的方法只能是public和default

    展开全文
  • 抽象类 当我们描述某一类的某一行为特征,但他们又大不相同,这时就可以利用抽象类,只是声明,而不实现具体的方法,需要用abstract 关键字进行修饰。 抽象类的特征: 有抽象方面的类必须定义为抽象类,而抽象...

    抽象类

           当我们描述某一类的某一行为特征,但他们又大不相同,这时就可以利用抽象类,只是声明,而不实现具体的方法,需要用abstract 关键字进行修饰。

    抽象类的特征:

    • 有抽象方面的类必须定义为抽象类,而抽象类可以不包含抽象方法;
    • 用abstract修饰;
    • 不可以实例化;
    • 一般用于子类去继承父类的方法extends。

    接口

           接口算是抽象类的一种特殊形式,就是,要是类中的所有方法都是抽象方法就是接口。

     

    接口的特征

    • 定义接口时默认使用 public abstract 来修饰;
    • 接口中的变量默使用“ public static final ”来修饰,即全集变量;
    • 用 interface 关键字
    • 子类通过实现(implements)的方式,来重写所有的抽象方法。
    • 也不能实例化对象。
    • 一个类可以实现多个接口,被实现的接口用逗号隔开
    • 继承的同时还可以实现接口

    类比 

    相同点:
    1. 内部可以包含抽象方法
    2. 都需要继承或者实现
    3. 都不可以使用new关键字进行实例化
    不同点
    1. 继承--每一个类只能有一个父类;接口——每个类可以实现多个接口
    2. 抽象类 可以拥有普通类有的一切内容 ;接口,静态 final 的属性,静态方法(不推荐使用),抽象方法

     

    转载于:https://www.cnblogs.com/sbxx/p/10702649.html

    展开全文
  • 在abstract class中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员...
  • 黑马程序员_Java基础篇(三)——抽象类和接口的对比 一)概述: 1、抽象类(abstract class):一般仅用于被子类继承。 当多个类出现相同功能时,但功能主体不同,这样可以向上抽取,抽取时只抽取功能定义,而不...
  • C++中没有接口的概念,与之对应的是纯虚类,即只含有纯虚函数的类,C++抽象类的概念是含有纯虚函数成员的类。这是因为C++提供多继承,而像 java、C#这些只...但是如果一个类,所有的成员都是纯虚函数,那么它和一般的抽
  • 抽象类2

    2018-12-08 09:52:28
    抽象类和一般类没有太大的不同。 该如何描述事物就如何描述事物,只不过,该事物中出现了一些看不懂的东西。 这些不确定的部分,也是该事物的功能,需要明确出现。但是无法定义主体。 通过抽象方法来表示。   ...
  • 抽象工厂模式是所有形态的工厂模式中...工厂方法和抽象工厂对比:工厂方法模式一个抽象产品,可以派生出多个具体产品。一个抽象工厂,可以派生出多个具体工厂。每个具体工厂只能创建一个具体产品的实例...
  •  对比:(1)简单工厂模式:简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。不修改代码的话,是无法扩展的。(2)工厂方法模式:定义一个用于创建对象的接口,让子类决定实例...
  • 英语汉语对比学习:名词(一)

    千次阅读 2012-10-28 15:06:36
    名词一般分为两大:专有名词普通名词.普通名词又分为:个体名词,集体名词,物质名词和抽象名词. 实际上我觉得这样给名词分类仅是了为便于理解,会涉及到一些细节的语法问题.除此之外对名词分类没有太大的实际意义的...
  • struts2与struts1.2的对比

    2011-05-12 11:03:00
    Struts1的一个共有的问题是面向抽象编程而不是面向接口编程 Struts2 的action实现了一个action接口,连同其他接口一起来实现可选择自定义的服务,struts2提供一个名叫actionSupport的基类来实现一般使用的...
  • 简单工厂工厂方法

    2019-09-07 22:12:40
    简单工厂工厂方法应该是我们在开发中应用的比较多的设计模式之一了,今天我们聊聊这两个工厂,对比一下这两个...由接口或者抽象类来实现。 结构图如下: 我们用简单工厂实现四则运算 代码如下:具有某一类共有...
  • 第4轮是部门老大面,主要就问一些架构、技术业务的理解、个人发展比较抽象的东西了。HR面主要就是跟你聊聊天,看看你的个人稳定性、价值观、主动性之的, 一般HR是不会挂人的,但很多人在HR面后挂了,原因其实不...
  • c# 加密解密相关代码

    热门讨论 2011-09-06 11:04:59
    MD5 类表示MD5 哈希算法的所有实现均从中继承的抽象类,该类位于System.Security.Cryptography 命名 空间下,其ComputeHash 方法有3种重载形式,分别介绍如下。 计算指定字节数组的哈希值,语法格式如下: public ...
  • UML之对象图,包图

    2018-03-03 11:13:53
    对象图对象图是类图的一个实例,表示系统在具体时间点上包含的对象以及各个对象之间的关系。...抽象类:不能被实例化的类,一般至少包括一个抽象操作。模板类:一种参数化的类,在编译时把模板参数绑定到不...
  • 一、叙述面向对象编程的特点是什么?(提示:封装、继承、多态)对比面向过程具有抽象、封装、继承和...继承允许在保持原有特性的基础上,进行更具体、更详细的说明,能够很好反映出特殊概念和一般概念之间的关系...
  • 1.叙述面向对象编程的特点是什么?(提示:封装、继承、多态。)对比面向过程具有抽象、封装、继承和多态的...继承允许在保持原有特性的基础上,进行更具体、更详细的说明,能够很好反映出特殊概念和一般概念之间的...
  • 继承允许在保持原有特性的基础上,进行更具体、更详细的说明,能够很好反映出特殊概念和一般概念之间的关系,是代码复用的基础机制。 多态使得一段程序能够具有处理多种类型对象的能力,相同的消息在不同的对象...
  • 继承允许在保持原有特性的基础上,进行更具体、更详细的说明,能够很好反映出特殊概念和一般概念之间的关系,是代码复用的基础机制。 多态使得一段程序能够具有处理多种类型对象的能力,相同的消息在不同的对象...
  • 工厂模式

    2019-08-31 16:31:50
    简单工厂模式、工厂方法模式和抽象工厂模式的对比 简单工厂模式 简单工厂模式是工厂模式中最简单的一种,它使用了最简单的方式隐藏了创建对象的细节,一般需要告诉工厂所需要的类型,工厂就会调用相应的...
  • 继承允许在保持原有特性的基础上,进行更具体、更详细的说明,能够很好反映出特殊概念和一般概念之间的关系,是代码复用的基础机制。 多态使得一段程序能够具有处理多种类型对象的能力,相同的消息在不同..
  • 继承允许在保持原有特性的基础上,进行更具体、更详细的说明,能够很好反映出特殊概念和一般概念之间的关系,是代码复用的基础机制。 多态使得一段程序能够具有处理多种类型对象的能力,相同的消息在
  • 迭代器模式

    2021-02-01 00:20:33
    这是一个经典的案例,书架案例,本文通过对比HashSet类和Set接口的方式来学习迭代器模式 迭代器模式的结构: 1、抽象容器角色 负责创建具体迭代器角色的接口,一般是一个接口,提供一个iterator方法,用于生成...
  • 1)、以现实中的实物为例,每种实物都会有自己的属性行为,然后可以将一种实物(人)抽象成c++中的一个(人类)。 2)、的成员变量就相当于实物属性(人一般都具有的特征),的成员方法就相当于实物行为...
  • 1、概述:工厂模式中一般会分为三种方式。根据创建的类别,我这样分类。(1)创建一对象的简单工厂工厂方法;...3、对比:三种的方式的抽象级别从简单工厂->工厂方法->抽象工厂依次递增,抽象级别越高,可扩展性越
  • 6道bat必考的Java面试题。 1.请对比 Exception Error,另外,运行时异常与一般异常有什么...5.谈谈接口和抽象类有什么区别? 6.synchronized ReentrantLock 有什么区别?有人说 synchronized 最慢,这话靠谱吗?
  • 是一种线性表,但是并不会按线性的顺序存储数据,而是在由一个个节点组成,节点一般包含存放数据的数据域存放指针的指针域。 补充: 抽象数据类型(Abstract Data Type [ADT]):表示数学中抽象出来的一些操作的...
  • 2、接口和抽象类的异同? 3、使用过哪些集合?ArrayListLinkedList异同? 4、遍历的几种方式?重点foreach 5、异常怎么处理?多层异常,最后面(最内层)的异常一般怎么处理? 异常处理的位置在哪里?是往上抛到...

空空如也

空空如也

1 2 3
收藏数 59
精华内容 23
关键字:

对比抽象类和一般类