`
longxiaoyan
  • 浏览: 77335 次
  • 性别: Icon_minigender_1
  • 来自: 桂-京
社区版块
存档分类
最新评论

抽象类 接口 复习

阅读更多
通过网上收集和自己总结的:
  • java中只可以继承一个类却可以继承多个接口。一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性, 所以抽象类作为类型定义工具的效能大打折扣(只能是定义为一种类型,可以结合接口使用)。在这一点上,Java接口的优势就出来了,任何一个实现了一个Java接口所规定的方法的类都可以具有这个接 口的类型,而一个类可以实现任意多个Java接口,从而这个类就有了多种类型。

  • 抽象类可以提供一些方法的实现。Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供一些方法的实现,而Java接口不可以,这大概就是 Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java 接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这 显然是Java接口的缺点。

  • abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,体现的是继承的关系;interface表示的是"like-a"关系,体现的是一种契约关系,并不要求interface的实现者和interface定义在概念本质上是一致的。


综合以上几点:
抽象类:只可以继承一个抽象类,却可以提供一些方法的实现,体现的是继承关系。
接口:可以继承多个接口,却不能提供方法的实现,体现的是契约关系。
我们定义抽象类型的时候可以使用抽象类,定义一些次要行为时就可以使用接口。



AlarmDoor是一种(is-a)Door类型,拥有(like-a)Alarm提供的行为。
再举几个例子:
public class Cellphone extends Phone implements Bluetooth{   
}

public  class  电视机 extends 电器 implements 遥控器{
 }


再看一下Collection接口,AbstractCollection定义为一个抽象类,继承了Collection接口,把接口中的size()和iterator()抽象化,其他方法实现。因此当一个具体的实现类继承AbstractCollection抽象类时只需实现size()和iterator()的具体实现就可以了。而不用每个方法都实现一次。
  • 大小: 7.8 KB
分享到:
评论
5 楼 menglong_du 2010-04-15  
个人认为接口就是一个规定
4 楼 palmer 2010-04-15  
本人有点不同的看法:
Interface的作用是:
定义界面, 或者你说的契约。它不管你是如何实现的。不管谁拿到了实现这个Interface的 具体实现类,那么就可以按照自己定义的契约去使用了。
这样,无论具体实现类如何改变,使用这个Interface的调用者, 都不需要变化。

既然是契约, 怎么能随随便便就改呢?  所以这不是Interface的缺点, 而是他的作用所在。

好比 JDBC 实际就应该是一大堆Interface, 你使用JDBC的时候, 不用管这个JDBC的实现是 ORACLE的, MYSQL的, 还是MSSQL的。  要是JDBC的接口整天变,那ORACLE, MYSQL, MSSQL 还不得疯了?


abstract class的目的是 实现,它的目的是把子类里面共同的东西集中到一起来实现, 这样 子类里面本来重复的东西不见了。

关于多重继承, 你想一想,既然abstract class是一个实现, 那么如果可以继承多个class,而每个父类里都有一个实现,那就很难弄清楚那个才是真正的实现了。 单继承, 正是java 比C++ 简单的一个重要原因, 甚至可以说是java的优势。

愚见, 不足之处还请拍砖。



3 楼 20055294 2010-04-14  
领教了, 学习了
2 楼 li445970924 2010-04-14  
我觉得各有各的优势 抽象类用得好好处是很明显的
比如给人行发报文因为有很多业务报文组装报文时 用一个抽象类就很好 用接口就比较麻烦了(因为不知道是那种报文掉接口不好确定) 抽象类把行为定义在那里 调抽象方法让子类实现就很好  我很喜欢
愚见....
1 楼 whaosoft 2010-04-14  
帖子说的不错 再接再厉不过要保证正确性 要是误导了谁就不好了

相关推荐

    java期末复习抽象类与接口,内部类,知识点.zip

    复习时,可以详细阅读`Java抽象类.docx`来理解抽象类的定义、用途和实例化规则,通过`Java接口.docx`学习接口的定义、实现方式以及多继承的特点,`Java内部类.docx`将帮助你掌握不同类型的内部类及其应用场景。...

    Java基础复习题.docx

    Java 基础复习题涵盖了多个关键概念,包括对象实例化、类的 static 方法、抽象类、接口、事件处理模型等。以下是对这些知识点的详细解释: 1. 对象实例化:不同对象的实例变量分配的内存空间地址通常不同,这是因为...

    JAVA基础--复习笔记.pdf

    本文档提供了JAVA基础知识的复习笔记,涵盖了JAVA的基础概念、数据类型、运算符、控制流程、类和对象、继承、多态、抽象类和接口等方面的知识。 一、数据类型 在JAVA中,有以下几种基本数据类型: * 整数类型:...

    Java期末复习题 Java 期末 复习题

    接口可以继承其他接口,抽象类可以实现接口,但不能继承另一个抽象类。 5. **接口的优点**:接口提供了一种定义行为规范的方式,无需实现,允许不相关的类共享相同的接口,增加了代码的灵活性和可扩展性。 6. **...

    计算机-《Java程序设计》复习资料.doc

    * 抽象类和接口的异同:抽象类和接口都不能够实例化,抽象类可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是 private、默认、protected、...

    复习大纲.pptx

    本资源摘要信息涵盖面向对象程序设计的重要知识点,包括接口的声明和实现、类的继承和多态、抽象类和接口的使用、构造函数的重载、字符串比较和等于号的区别、多态和接口回调等。 1. 接口的声明和实现: 在面向...

    java程序语言设计第十版复习题答案

    复习题可能考察接口的定义、实现,以及抽象类和接口的区别。 9. **泛型**:泛型引入了类型参数,提高了代码的复用性和安全性。复习题可能涉及泛型类、泛型方法、通配符、类型擦除等概念。 10. **反射与注解**:...

    java语言程序设计 进阶版 第十版 复习题答案

    复习题可能包括创建抽象类和接口,以及如何在实际编程中应用它们。 3. **异常处理**:Java的异常处理机制是程序健壮性的重要组成部分。复习题可能会涉及到try-catch-finally语句块,自定义异常,以及如何有效地处理...

    JAVAEE复习题.pdf

    这个PDF复习题涵盖了Java EE开发中的一些基础知识,包括字符编码处理、抽象类与接口的区别、线程概念与状态、ORM技术、Hibernate的核心接口、线程池的权重分类、JDBC与Hibernate的分页实现,以及Servlet的生命周期与...

    C#期末总复习 C#语言基础和程序结构 数据类型:数组、结构和枚举 运算符、表达式和结构化程序 类的构造方法,继承,接口和抽象类 委托与事件 WindowsForm应用程序 XML操作等

    * 编译器的使用:csc.exe /main:<类> 三、数据类型 * 值类型与引用类型的比较 + 值类型:存储在栈中,存储值,通过变量名引用 + 引用类型:存储在堆中,存储地址 * 类型转换 + 隐式转换:安全的转换 + 显式...

    接口技术考试题 复习题 往届试题

    在本套复习资料中,包含历年10套接口技术考试试题,这些试题可以帮助学生全面理解并掌握接口技术的核心概念、原理及应用。下面将详细阐述相关知识点。 1. **接口的定义与分类**:接口可以被视为一种协议,规定了...

    Java的考试复习资料整理

    - 抽象类可以继承其他类和接口,接口只能继承其他接口。 - 接口支持多继承,抽象类只支持单继承。 - **定义抽象类**: - 使用`abstract`关键字。 - 可以包含抽象方法和已实现的方法。 - 不能实例化。 - **...

    Java复习资料.pdf

    - 抽象类与接口:抽象类可以实现接口,实体类可以被抽象类继承,但实体类必须有公共构造器。 3. 抽象类与接口的区别: - 抽象类:包含抽象方法,部分或全部方法未实现。子类必须实现所有抽象方法。 - 接口:只有...

    面向对象技术Java-期末复习试卷(三).docx

    本文档是一个Java期末复习试卷,包含了多个选择题,涵盖了面向对象技术的多个方面,包括Java的基本语法、面向对象的概念、继承、多态、抽象类和接口等。本文档将对每个问题进行详细的解释和分析。 1. 有关Java文件...

    JAVA期末复习和答案1.doc

    Java是一种广泛使用的...以上就是Java期末复习题中涉及的主要知识点,涵盖了类、对象、继承、多态、接口、构造函数、抽象类和方法、数组、布局管理器等基础概念。理解并掌握这些概念对于学习和使用Java编程至关重要。

    Java复习题目

    以上是根据题目内容整理的Java复习知识点,涵盖了抽象类、接口、多态、异常处理、数组操作和编程实践等多个方面。理解并熟练掌握这些概念和语法是成为Java程序员的基础。在实际编程过程中,还需要结合设计模式、并发...

    JAVA复习题.doc

    选项C说明实现抽象类或接口的类必须实现所有方法,除非它是抽象类,这是正确的。选项D的错误在于,接口中的方法默认都是抽象的,不能在接口中提供具体实现,但在Java 8以后,接口可以包含default方法,提供了默认的...

    java 各知识点总结 留着复习看

    子类继承抽象类必须实现所有的抽象方法,除非子类也是抽象类。 **接口**是一种完全抽象的类型,它只包含抽象方法和常量。接口可以被类实现,一个类可以实现多个接口,实现了接口的类必须实现接口中所有的抽象方法。...

Global site tag (gtag.js) - Google Analytics