- 浏览: 1089818 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (208)
- 血泪体验 (108)
- 信口随手 (30)
- Play WEB框架 (11)
- 转载 (13)
- 翻译 (51)
- gradle (8)
- JavaFX2 (30)
- mongoDB (8)
- 语言特性 (13)
- 数理逻辑 (21)
- UCMA+Lync (6)
- .NET (9)
- erlang (4)
- orchard (2)
- jbake (1)
- SpringBoot (12)
- Thymeleaf (1)
- rust-lang (1)
- eclipse (1)
- dubbo (2)
- maven (1)
- log4j (1)
- 信口随手,mybatis (0)
- Q# (11)
- 量子计算 (8)
- mybatis (1)
- idea (1)
- 机器学习 (6)
- 前端技术 (2)
最新评论
-
halomax:
插件可用,特别感谢楼主
Lombok不支持Idea2018的解决方案 -
tzq668766:
刚找到一个中文版springboot banner在线生成工具 ...
SpringBoot启动时的Banner设置 -
somefuture:
吕檀溪 写道我一直编译不成功,不知道能不能帮忙弄一个2018. ...
Lombok不支持Idea2018的解决方案 -
吕檀溪:
我一直编译不成功,不知道能不能帮忙弄一个2018.2 eap的 ...
Lombok不支持Idea2018的解决方案 -
lkjust08:
mac下的确是可以用了。
Lombok不支持Idea2018的解决方案
用了Java很多年,很少涉及到抽象类的使用。现在快毕业了,找工作的时候,首当其冲的面试题就是“Java 抽象类和接口的区别”。
好吧,为了以后自己方便,也为了看到这篇文章的读者方便,引用一下官网的解释。
An abstract class
is a class that is declared abstract
—it may or may not include abstract methods.
抽象类可以含有非抽象方法,也可以不含抽象方法。
Abstract classes cannot be instantiated, but they can be subclassed.
抽象类可以被继承,但不能new。
An abstract method is a method that is declared without an implementation (without braces, and followed by a semicolon), like this:
抽象方法没有方法体,以分号结尾,如下:
abstract void moveTo(double deltaX, double deltaY);
If a class includes abstract methods, the class itself must
be declared abstract
, as in:
public abstract class GraphicObject {
// declare fields
// declare non-abstract methods
abstract void draw();
}
When an abstract class is subclassed, the subclass usually provides
implementations for all of the abstract methods in its parent class.
However, if it does not, the subclass must also be declared abstract
.含有抽象方法的类必须是抽象类。他的子类必须实现他的所有抽象方法,否则子类必须声明为抽象的。
以上是抽象类和抽象方法的基本概念。接下来看一下他和接口的关系:说不定会让你吃一惊。
All of the methods in an interface
(see the
Interfaces
section) are implicitly
abstract, so the abstract
modifier is not used with interface methods (it could be—it's just not necessary).接口中的方法都是抽象方法,虽然没有声明。当日声明了也是可以的。
Unlike interfaces, abstract classes can contain fields that are not static
and final
,
and they can contain implemented methods. Such abstract classes are
similar to interfaces, except that they provide a partial
implementation, leaving it to subclasses to complete the implementation.
If an abstract class contains only
abstract method declarations, it should be declared as an interface instead.
如果一个抽象类只含有抽象方法,那就把它声明为接口吧。这就是共同点。否则的话,抽象类中的非抽象方法可以有部分功能代码,子类可以完成这些方法。抽象类中的变量也无需是静态和常量。而接口中的变量都是final的。
Multiple interfaces can be implemented by classes anywhere in the
class hierarchy, whether or not they are related to one another in any
way. Think of Comparable
or Cloneable
, for example.
By comparison, abstract classes are most commonly subclassed to share pieces of implementation. A single abstract class is subclassed by similar classes that have a lot in common (the implemented parts of the abstract class), but also have some differences (the abstract methods).
抽象类虽然像接口,但他毕竟是一个类,就有类的特征。而接口是给实现他的泪增加属性的。可能是借口和具体类直接的分立太明显了,所以SUN提出了抽象类吧。
曾经听一哥们说:
抽象类被继承后,你可以往抽象类中添加非抽象方法,这样他的子类都具有了这些方法。而接口被实现后,往里面增加方法后,子类必须重写,否则编译出错了。这就是他们看起来的大区别吧。
发表评论
-
冰天雪地的前进
2018-07-15 14:39 907https://www.manxi.info/ 引用此处不再 ... -
非齐次方程组与行列式
2018-06-08 16:31 1717原文地址 : https://www.jianshu.com/ ... -
(转)机器学习:开发集和测试集
2018-05-10 12:43 2562转子吴恩达deeplearningai 根据公司的核 ... -
(转)Dozer 使用小结
2018-05-03 20:12 1361这篇文章是本人在阅读Dozer官方文档(5.5.1版本 ... -
(转)为什么选择机器学习策略
2018-04-28 12:48 1189转自 吴恩达deeplearningai 机器学习( ... -
Lombok不支持Idea2018的解决方案
2018-03-29 15:08 20005如果你也在intellij idea 2018中使用了Lo ... -
java8中的时间处理7 - 向前兼容(新老类转换)
2018-02-23 09:45 1802我们不太可能使用jdk8以后就把原来的代码都改成新api。 ... -
java8中的时间处理6 - 格式化
2018-02-23 09:45 1682下面是格式化和解析的粒子: LocalD ... -
java8中的时间处理5 - 日期工具
2018-02-23 09:33 1321接下来看一下工具类的操作: LocalD ... -
java8中的时间处理4 - Instant
2018-02-22 18:04 1864Instant 类是机器易读的时间信息,存放的是uni ... -
java8中的时间处理3 - LocalDateTime
2018-02-22 17:51 3676LocalDateTime 包含日期和时间。默认格式是 y ... -
java8中的时间处理2 - LocalTime
2018-02-22 18:01 1906LocalTime是不可变的时间类,默认格式hh:mm:ss ... -
java8中的时间处理1 - LocalDate
2018-02-22 17:47 3486LocalDate 是日期的不可变类,默认格式yyyy-M ... -
java8中的时间处理0 - api介绍
2018-02-22 17:50 1186Java 8 Date Time API是我 ... -
Spring中的多例往单例里注入的方法
2018-01-16 19:17 4507Spring的prototype向singleton注入会有 ... -
Spring 事务提交成功事件监听
2017-12-27 18:22 9214现在微服务做得越来越多了,头就越来月疼了。 跨系统事务和 ... -
Spring Bean的prototype无用的解决
2017-12-15 20:09 6701spring 的bean默认是单例,这个用spring的人 ... -
Java的nanoTime()
2017-12-14 13:29 8481java有两个获取和时间相关的秒数方法,一个是广泛使用的 ... -
Java 蓝牙无线API 简介
2017-02-20 15:16 5368原文地址: http://www.or ... -
Java单向链表反转
2016-08-15 16:32 3895Java API中的链表是双向的,我们这里自己新建一个类代表 ...
相关推荐
Java抽象类和抽象方法是实现面向对象编程中多态性和代码重用的关键工具。通过定义抽象类和抽象方法,可以构建出更加灵活和可扩展的代码结构,使得代码更易于维护和扩展。理解并掌握抽象类和抽象方法的使用,对于成为...
例如,你可以定义一个注解`@MockApi`,然后在处理器中分析带有这个注解的类,生成一个新的实现类,这个新类将包含原始抽象类和接口的实现。 总的来说,虽然Java中的抽象类不能直接实例化,但我们可以通过继承并实现...
JAVA抽象类和抽象方法实例分析 JAVA抽象类和抽象方法是Java面向对象程序设计中非常重要的概念,它们是Java编程语言的基础组成部分。抽象类和抽象方法可以帮助开发者更好地组织和设计程序架构,提高代码的可读性和...
本实验手册即根据需求模拟完成一个简易的疯狂动物城游戏系统, 平台的全称为:使用抽象类和接口实现疯狂动物城项目(后简称为: crazyZoo) 。该系统的主要功能包括:查看动物城成员、入驻动物城、修改动物信息、查找疯狂...
在Java语言中,abstract class和interface 是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,...
java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例java抽象类与接口实例...
通过学习和熟练掌握Java抽象类,开发者能够更好地设计和组织代码,提高代码的灵活性和可维护性,是成为一名优秀Java程序员的必备技能之一。在实际开发中,合理利用抽象类和接口,可以帮助我们构建出高效、可扩展的...
Java抽象类与接口实验报告
总的来说,抽象类和接口在Java中各有其独特的作用,正确选择和组合使用它们可以提高代码的灵活性、可扩展性和可维护性。在实际开发中,应根据问题领域的需求、设计意图和面向对象原则来做出决策。
此书对于你学习Java抽象类和接口有非常大的帮助
### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...
"Java抽象类和接口和继承之间关系" Java抽象类和接口是两种不同的概念,它们之间存在着继承关系。在Java中,抽象类(abstract class)和接口(interface)都是用来描述对象的行为和状态的,但它们之间有着明显的...
Java中的类、抽象类和接口的区别和联系
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...
通过本实验,学生将掌握 Java 中的抽象类和接口的概念及其应用,并了解如何使用抽象类和接口来描述不同的业务逻辑。 四、实验讨论 在本实验中,我们使用抽象类和接口来描述不同的雇员类型,并演示了如何使用这些类...
在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别
在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...
本系统以Java为编程语言,它利用了抽象类来定义宠物的基本属性和行为,使得我们可以方便地创建各种不同类型的宠物,如狗、猫或其他动物。 在Java中,抽象类是一种不能被实例化的特殊类,它用于定义一类对象的通用...
### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...
Java 抽象类和接口是面向对象编程中的关键概念,它们允许我们设计灵活且可扩展的代码结构。在这个练习中,我们将深入理解这两个概念以及它们与异常处理的关系。 1. 接口的修饰符:在Java中,接口只能用`public`修饰...