资讯专栏INFORMATION COLUMN

【Java】抽象类与接口

mengbo / 501人阅读

摘要:在抽象类中,声明的是,可是。抽象类只能作为子类的超类,子类继承抽象类时必须被实现。它根本不存在方法的实现实现子类使用关键字来继承抽象类。添加新方法如果你往抽象类中添加新的方法,你可以给它提供默认的实现。转自,抽象类与接口的区别

抽象类与接口

抽象类与接口一样,都不能被实例化,可以有具体实现的方法,也可以有抽象的方法。在抽象类中,声明的field是static、final,method可是public、protected、private。而在接口中,声明的field是public、static、final,method是public。

抽象类只能作为子类的超类,子类继承抽象类时abstract method必须被实现。

接口是抽象方法的集合。如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。

在以下情况,可以考虑用abstract class:

You want to share code among several closely related classes.

You expect that classes that extend your abstract class have many common methods or fields, or require access modifiers other than public (such as protected and private).

You want to declare non-static or non-final fields. This enables you to define methods that can access and modify the state of the object to which they belong.

在以下情况,可以考虑用interface:

You expect that unrelated classes would implement your interface. For example, the interfaces Comparable and Cloneable are implemented by many unrelated classes.

You want to specify the behavior of a particular data type, but not concerned about who implements its behavior.

You want to take advantage of multiple inheritance of type.

详细区别
参数 抽象类 接口
默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现
实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器 抽象类可以有构造器 接口不能有构造器
与正常Java类的区别 除了你不能实例化抽象类之外,它和普通Java类没有任何区别 接口是完全不同的类型
访问修饰符 抽象方法可以有public、protected和default这些修饰符 接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法 抽象方法可以有main方法并且我们可以运行它 接口没有main方法,因此我们不能运行它。
多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口
速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
添加新方法 如果你往抽象类中添加新的方法,你可以给它提供默认的实现。因此你不需要改变你现在的代码。 如果你往接口中添加方法,那么你必须改变实现该接口的类。
转自

importnew,Java抽象类与接口的区别.

orcale docs,Abstract Methods and Classes.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64107.html

相关文章

  • java学习(三) —— 面对对象

    摘要:前言是面对对象的语言,因此有必要单独纪录下对象的各种定义和理解。面对对象基本概述概述是基于面向过程的变成思想,是对面向过程的一种封装。面对对象开发就是不断的创建对象,使用对象,指挥对象做事情。面对对象设计其实就是在管理和维护对象之间的关系。 前言 java是面对对象的语言,因此有必要单独纪录下对象的各种定义和理解。 面对对象,主要包括:面向对象思想,类与对象及其使用,对象的内存图,成...

    褰辩话 评论0 收藏0
  • Java抽象类与接口的区别

    摘要:很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。在讨论它们之间的不同点之前,我们先看看抽象类接口各自的特性。抽象类抽象类是用来捕捉子类的通用特性的。 很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。 在讨论它们之间的不同点之前,我们先看看抽象类...

    Ethan815 评论0 收藏0
  • Java抽象类与接口

    摘要:抽象类和接口抽象类抽象方法是只有方法签名,没有方法实现的方法。抽象类不能被实例化,抽象类可以包含方法抽象和普通成员变量构造器初始化块内部类接口枚举种成分。抽象类的构造器不能用于创建实例,主要用于被其子类调用。 抽象类和接口 1.抽象类 抽象方法是只有方法签名,没有方法实现的方法。有抽象方法的类只能被定义成抽象类,抽象类可以没有抽象方法。抽象方法和抽象类必须使用abstract修饰符来定...

    wdzgege 评论0 收藏0
  • Java 面向对象

    摘要:自从转到前段,差不多有一年时间没有动了,今天老弟问我关于的面向对象,自己不敢直接回答了,也许自己真的应该去做相关的考究了。要有父类引用指向子类对象。外部类要访问内部类的成员,必须要建立内部类的对象。 自从转到前段,差不多有一年时间没有动Java了,今天老弟问我关于Java的面向对象,自己不敢直接回答了,也许自己真的应该去做相关的考究了。然后在告诉他吧,记在这里当做一个笔记吧。  什么...

    cncoder 评论0 收藏0
  • Java编程基础10——面向对象_多态&抽象类&接口

    摘要:案例演示抽象类的成员特点抽象类的成员方法特性抽象方法强制要求子类做的事情。抽象类中定义的是该继承体系的共性功能。 1.多态的概述及其成员访问特点代码体现 A:多态(polymorphic)概述 事物存在的多种形态 B:多态前提- 1.要有继承关系 2.要有方法重写 3.要有父类引用指向子类对象。 C:多态中的成员访问特点之 成员变量:编译和运行都看父类。 成员方法:编...

    dunizb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<