`
yxwang0615
  • 浏览: 561092 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

接口中声明abstract方法的意义

    博客分类:
  • java
阅读更多

在一个遗留系统中看到IbaseDao接口中声明的某些方法加了abstract,想不明白为什么?

 

去网上查了一下,得到的答案是:

加不加abstract都一样,在interface中的方法全部都默认是abstract方法,所以interface中加不加abstract的意思是一样的,而且不能有方法体。

 

有人说这是c++程序员写java程序的遗留习惯..
c++没interface只有abstract   class,方法必须加abstract修饰。

 

这里继续整理一下接口与抽象类的联系与区别:

 

联系:

接口是一个特殊的抽象类,接口中的所有方法默认都加上了public abstract。

 

区别:

1.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

2.抽象类的属性可以具有访问级别,而接口的属性必须是public static的。

3.抽象类中可以有普通成员变量,接口中没有普通成员变量,接口中的成员变量类型默认为public static final。

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

5.接口没有构造方法,也就是不能被实例化,Interfaces cannot have constructors。抽象类虽然可以添加构造方法,但是也不允许实例化,Cannot instantiate the type xx,因为抽象类代表的是一类事物,不够具体,站在面向对象 的角度看,实例化抽象类没有任何意义。

 
二者在应用上的区别:
      接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用。

 

模板方法设计模式是抽象类的一个典型应用。

 具体讲解见:http://yxwang0615.iteye.com/blog/1001855

 

 

 

 

参考文章:

http://www.iteye.com/topic/760018

分享到:
评论

相关推荐

    C#接口13.doc

    此外,接口可以被`abstract`和`密封`(`sealed`)修饰,但这在C#中并没有实际意义,因为接口本身就是抽象的,且不能被实例化。 #### 1.2 基接口 接口可以继承其他接口,使用`:`操作符来指定基接口,如`interface ...

    Java面向对象课抽象类和接口PPT教案学习.pptx

    * 类如果要实现一个接口,它必须要实现接口声明的所有方法。但是,类可以不实现抽象类声明的所有方法,当然,在这种情况下,类也必须得声明成是抽象的。 * 抽象类可以在不提供接口方法实现的情况下实现接口。 * Java...

    java接口例子

    接口中的所有成员默认都是public和abstract的,因此无需显式声明。此外,接口可以包含常量(final static变量)但不能包含实例变量。 接下来,我们看如何在类中实现接口。一个类可以实现一个或多个接口,通过关键字...

    JAVA接口的介绍

    这里定义了一个`DB`接口,该接口声明了两个方法:`openDB`用于打开数据库连接,`close`用于关闭连接。`Mysql`类实现了`DB`接口,并提供了具体的实现细节。 #### 工厂模式的应用 为了更好地管理和创建不同类型的...

    接口定义Test.rar

    - 抽象类可以包含部分实现,而接口只能包含方法声明。 - 类可以继承一个抽象类,但可以实现多个接口。 - 抽象类更适用于有共同属性和方法的类的基类,而接口则更侧重于行为的定义。 5. **接口的测试**: 测试...

    中级.NET开发人员

    根据给定的信息,我们可以从中提炼出关于.NET框架中接口(Interface)与抽象类(Abstract Class)的相关知识点。这里主要探讨了接口与抽象类在.NET开发中的应用及其重要性。 ### 接口(Interface) #### 定义 接口...

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

    抽象方法是指在抽象类中声明的方法,但没有具体的实现。子类必须实现抽象方法,否则子类也将是一个抽象类。 例如,我们可以定义一个抽象类“水果(Fruit)”,它有几个子类“苹果(Apple)”、“橘子(Orange)”、...

    java利用接口和抽象类改写求圆的面积和梯形的面积.docx

    // 实现所有接口中声明的方法 } ``` 在了解了接口和抽象类的定义和使用格式之后,我们可以根据以下几点来选择使用接口还是抽象类: 1. **成员实现详情**:抽象类可以提供成员的实现详情,而接口不能。如果你...

    接口和抽象类

    接口中的方法默认是`public abstract`的,但从Java 8开始,接口也可以包含默认方法(使用`default`关键字)和静态方法。 #### 五、案例分析 根据题目中给出的代码示例,我们可以看到: 1. **抽象类的定义**: ``...

    实验七-接口的实现.doc

    - 在C#中,接口用`interface`关键字声明,方法默认为`public abstract`,即所有成员都是公开的抽象方法。 - 类通过使用`: InterfaceName`来实现接口,必须提供接口中所有方法的具体实现。 - 类可以实现多个接口,...

    抽象类和接口的区别

    如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现, 那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。  包含抽象方法的类称为抽象类,但并...

    java接口学习笔记

    - **接口的实现**:类实现接口时,必须实现接口中声明的所有方法,除非该类也被声明为抽象类。 #### 二、接口与类的比较 **1. 多态性与抽象** - 类通过继承实现多态性,而接口则通过实现机制提供多态性。类可以...

    实验5 抽象类与接口_jj.py_

    接口在某些语言中(如Java和C#)是独立于实现的类型声明,但在Python中,接口的概念相对较弱,因为所有类本质上都是接口。然而,我们可以通过约定或使用`abc`模块来模拟接口。比如,如果我们想要定义一个`Printable`...

    Java开发零基础篇:day09 面向对象(三).pdf

    接口中的方法默认是public和abstract类型的,这意味着任何实现接口的类都必须以public访问修饰符来实现这些方法。这保证了接口的抽象性同时,通过抽象方法的定义,接口又确立了一种规范。 低耦合度的体现 接口的...

    抽象类、反射、动态绑定、及接口的使用

    在Java和C#等语言中,我们用`abstract`关键字来声明一个类为抽象类。 例如: ```java public abstract class Animal { public abstract void sound(); public void eat() { // 具体实现 } } ``` 在这个例子中,...

    java抽象类与接口.doc

    在Java中,使用`abstract`关键字来标识一个方法或类为抽象的。一个包含抽象方法的类必须声明为抽象类。抽象类不能被实例化,只能作为其他类的基类,通过继承来提供具体实现。一个类继承抽象类时,必须实现所有未被...

    抽象类和抽象方法.pdf

    - **抽象方法**:没有具体实现,只有方法签名,用 `abstract` 关键字声明。子类继承抽象类时,必须实现这些抽象方法,除非自身也成为抽象类。 4. **定义抽象类的意义**: - 提供公共类型:抽象类的引用可以指向...

    C#-继承和接口.ppt

    覆盖方法声明不能包括new,static,virtual或abstract限定符中的任何一个,对于一个覆盖声明,除非下面都是可行的,否则,编译时就会出错: * 一个被覆盖的基本方法能被定位; * 被覆盖的基本方法是虚拟的、抽象的...

    java程序设计思考与练习

    在提供的代码示例中,类`MyListener`实现了两个接口但没有实现`ItemListener`接口中的`itemStateChanged()`方法,因此会产生编译错误。 ### 7. 常量的定义 在Java中定义常量时,通常使用`public static final`修饰...

Global site tag (gtag.js) - Google Analytics