`
somefuture
  • 浏览: 1089818 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Java抽象类和方法

阅读更多

用了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提出了抽象类吧。



曾经听一哥们说:

抽象类被继承后,你可以往抽象类中添加非抽象方法,这样他的子类都具有了这些方法。而接口被实现后,往里面增加方法后,子类必须重写,否则编译出错了。这就是他们看起来的大区别吧。





分享到:
评论

相关推荐

    Java抽象类和抽象方法

    Java抽象类和抽象方法是实现面向对象编程中多态性和代码重用的关键工具。通过定义抽象类和抽象方法,可以构建出更加灵活和可扩展的代码结构,使得代码更易于维护和扩展。理解并掌握抽象类和抽象方法的使用,对于成为...

    Java实例化一个抽象类对象的方法教程

    例如,你可以定义一个注解`@MockApi`,然后在处理器中分析带有这个注解的类,生成一个新的实现类,这个新类将包含原始抽象类和接口的实现。 总的来说,虽然Java中的抽象类不能直接实例化,但我们可以通过继承并实现...

    JAVA抽象类和抽象方法(abstract)实例分析

    JAVA抽象类和抽象方法实例分析 JAVA抽象类和抽象方法是Java面向对象程序设计中非常重要的概念,它们是Java编程语言的基础组成部分。抽象类和抽象方法可以帮助开发者更好地组织和设计程序架构,提高代码的可读性和...

    基于Java抽象类和接口实现疯狂动物城

    本实验手册即根据需求模拟完成一个简易的疯狂动物城游戏系统, 平台的全称为:使用抽象类和接口实现疯狂动物城项目(后简称为: crazyZoo) 。该系统的主要功能包括:查看动物城成员、入驻动物城、修改动物信息、查找疯狂...

    Java中抽象类和接口的区别

    在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抽象类与接口实验报告

    浅析Java抽象类和接口的比较

    总的来说,抽象类和接口在Java中各有其独特的作用,正确选择和组合使用它们可以提高代码的灵活性、可扩展性和可维护性。在实际开发中,应根据问题领域的需求、设计意图和面向对象原则来做出决策。

    Java抽象类和接口.ppt

    此书对于你学习Java抽象类和接口有非常大的帮助

    详细解析Java中抽象类和接口的区别

    ### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...

    Java抽象类和接口和继承之间关系

    "Java抽象类和接口和继承之间关系" Java抽象类和接口是两种不同的概念,它们之间存在着继承关系。在Java中,抽象类(abstract class)和接口(interface)都是用来描述对象的行为和状态的,但它们之间有着明显的...

    Java中的类、抽象类和接口的区别和联系

    Java中的类、抽象类和接口的区别和联系

    Java源代码:抽象类和接口

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,为其他类提供模板或行为指南。让我们深入探讨这两个概念及其在Java中的应用。 首先,我们来理解抽象类。在Java中,抽象类是一...

    实验5:Java抽象类与接口.doc

    通过本实验,学生将掌握 Java 中的抽象类和接口的概念及其应用,并了解如何使用抽象类和接口来描述不同的业务逻辑。 四、实验讨论 在本实验中,我们使用抽象类和接口来描述不同的雇员类型,并演示了如何使用这些类...

    JAVA中抽象类和接口的区别

    在Java语言中,abstract class 和interface 是支持抽象类定义的两种机制区别

    java 抽象类与接口的练习

    在Java编程语言中,抽象类和接口是两种重要的面向对象设计概念,它们允许我们定义规范,供其他类去实现或继承。在这个练习中,我们将深入理解这两种机制,并通过实际的代码示例和注释来加深理解。 首先,让我们讨论...

    宠物系统(java抽象类)

    本系统以Java为编程语言,它利用了抽象类来定义宠物的基本属性和行为,使得我们可以方便地创建各种不同类型的宠物,如狗、猫或其他动物。 在Java中,抽象类是一种不能被实例化的特殊类,它用于定义一类对象的通用...

    java抽象类与接口区别

    ### Java抽象类与接口的区别 #### 一、引言 在Java编程中,抽象类(Abstract Class)与接口(Interface)都是实现抽象的关键工具。它们各自有着独特的优势和适用场景,掌握这两者的区别有助于开发者更好地设计系统...

    java 抽象类练习题

    Java 抽象类和接口是面向对象编程中的关键概念,它们允许我们设计灵活且可扩展的代码结构。在这个练习中,我们将深入理解这两个概念以及它们与异常处理的关系。 1. 接口的修饰符:在Java中,接口只能用`public`修饰...

Global site tag (gtag.js) - Google Analytics