abstract class 和 interface

含有abstract修饰符的class即为抽象类,abstract类不能创建实例对象。含有abstract方法的类必须定义为abstract class, abstract class 中的方法不必是抽象的。abstract class类中定义抽象方法必须在具体(concrete)子类中实现, 所以, 不能有抽象构造方法或抽象静态方法。如果子类没有实现抽象父类中的所抽象发法,那么子类也必须定义为abstract类型。

接口(interface)可以说成是抽象类中的一种特例, 接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型, 接口中的成员变量类型默认为public static final。

abstract class 和 interface 的语法区别:
     1. 抽象类可以有构造方法(非abstract),接口中不能有构造方法。

2. 抽象类中可以有普通成员变量, 接口中没有普通成员变量(interface中的成员变量默认都为:public static final)。

3. 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的(默认:public abstract)。

4. 抽象类中的抽象方法的访问类型可以是public, protected,但接口中定义的变量只能是public, 并且默认即为public abstract。

5. 抽象类中可以包含静态方法,接口中不能包含静态方法(因为接口中所有方法均为public abstract,需要类implements,实现抽象方法,而static方法不能被重写,所以不能为static)。

6. 一个类可以实现多个接口,但只能继承一个抽象类。

abstract class和 interface 在应用上的区别:

接口更多的是在系统架构设计方面发挥作用,主要用于定义模板之间的通信契约。

抽象类在代码实现方面发挥作用,可以实现代码的重用。 例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只需要完成各自独有的业务逻辑代码。

时间: 2024-10-18 09:11:45

abstract class 和 interface的相关文章

11)Java abstract class 和 interface

abstract class 和 interface 的区别 ? ? ?含有abstract修饰符的class即为抽象类,abstract 类不能创建实例对象.含有abstract方法的类必须定义为abstract class,abstract class类中的方法不一定是抽象的. ? ? ?abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法.如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类

深入理解abstract class和interface

Abstract class Interface 实例化 不能 不能 类 一种继承关系,一个类只能使用一次继承关系.可以通过继承多个接口实现多重继承 一个类可以实现多个interface 数据成员 可有自己的 静态的不能被修改即必须是static final,一般不在此定义 方法 可以私有的,非abstract方法,必须实现 不可有私有的,默认是public,abstract 类型 变量 可有私有的,默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值 不可有私有的,默认是pub

Java中abstract class 和 interface 的解释和他们的异同点(转)

(一)概述    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存 在,才赋予了Java强大的 面向对象能力.abstract class和interface之间在对于抽象类定义的支持方面具有 很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的 选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理 解.对于设

【转】abstract class和interface的区别

在编程语言中,abstract class和interface是支持抽象类定义的两种机制.abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理. Abstract class Interface 实例化 不能 不能 类

abstract class和interface有什么区别(转载自:XBOX)

abstract   class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力.abstract   class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract   class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.

Java abstract class vs interface

前言 abstract class和interface都是java用来描述抽象体的,不知道是否有同学跟我一样对这两者的语法层面的区别以及如何选择这两者还存在着疑惑,反正接下来,让我详细介绍一下abstract class和interface. 理解抽象类 在面向对象的概念中,所有的对象都是通过类来描述的.但是反过来却不是这样,并不是所有的类都是用来描述对象的.因为这个类中可能没有足够的信息来描述一个具体的对象,这样的类就是抽象类(ps:注意这里的抽象类不是单指abstract class).抽象

在.NET 应用程序设计中如何选择Class, Abstract Class and Interface

关键字: Type– 类型 Class - 类 Abstract - 抽象的 Interface - 接口 Member - 成员 Method - 方法 Property - 属性 预备知识:在阅读本文时,您应当了解.NET编程的基本知识并且已经掌握Class, Abstract Class 和 Interface全部知识.这里我仅简单介绍一下他们的基本知识.本文的例子由C#编写.期望您对C#编程有一定的了解. 正文: 我们无法创建一个Abstract Class或Interface的实例(I

abstract class和interface的区别

在Java语言中,abstract class和interface是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的面向对象能力.abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意.其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解.对于设计意图的理解是否正确.合理. Abst

Java abstract class 和 interface 的区别

1. abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制 2. 以Door的抽象概念为例,门一般有open和close动作,如果只有这些,通过abstract class或者interface来定义都可以,看起来没问题. 3. 但是Door应该还有一些抽象的属性,比如状态,大小.形状.材质等,这些放在interface定义里就不合适了(注:interface的成员变量必须是public static final的),应该用abstract class

php Abstract Class 与 Interface的用法

在编写程序的时候我常常陷入纠结,一个抽象对象,到底应该定义成 抽象类(Abstract Class) 还是 接口(Interface) 呢?二者具有很大的相似性,甚至可以相互替换,难以选择.在 Stackoverflow 上这个问题被问了很多次,各种编程语言的都有.而在 PHP 官网文档 Abstract Class 和 Interface 章节下面的评论里,人们也是争论不休.为了弄明白这个问题,必须仔细对比一下二者的区别和使用场景. 一.Abstract Class 与 Interface 的