Java中接口和抽象类的区别与相同之处

 更新时间:2015年06月06日 14:48:26   投稿:junjie  
这篇文章主要介绍了Java中接口和抽象类的区别与相同之处,本文讲解了抽象类的概念、接口的概念、接口和抽象类的区别与联系等内容,需要的朋友可以参考下

1. 抽象类:
(1).概念:抽象类是对一种事物的抽象,即对类抽。.抽象类是对整个类整体进行抽象,包括属性、行为。Java抽象类和Java接口一样,都用来声明一个新的类型。并且作为一个类型的等级结构的起点。
(2).格式:

复制代码 代码如下:

   public abstract class abstractDemo{
            /**属性*/
            private String name;
            /**方法*/
            public abstract void fun();
        }

(3).说明:
A:抽象类中不一定有抽象方法,但是有抽象方法的类一定要定义为抽象类。
B:在Java语言中,类有两种,一种是具体类,另一种是抽象类。
具体类可以实例化,抽象类不可以实例化。
C:对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;
D:抽象方法只有声明,没有具体的实现。抽象类是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,就等于白白的创建了这个类。
E:对于一个父类,如果它的一个方法在父类中实现没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为了abstract抽象类。
2. 接口:
(1).概念:接口是对行为的抽象。接口是对类局部(行为)进行抽象。
(2).格式:

复制代码 代码如下:

  public interface test {
    /** 抽象方法 */
    public abstract void fun();
}


(3).说明:

接口中可以含有变量和方法,但是,接口中的变量会被隐式地指定为public static final。而方法会被隐式地指定为public abstract方法且只能是public abstract方法。

3. 接口和抽象类的区别与联系:

(1).抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。
(2).抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。
(3). 继承是一个 “是不是”的关系,而 接口 实现则是 “有没有”的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系。
(4).接口只给出方法的声明,不给出方法的实现。抽象类中可以有抽象方法的一般方法。如果是抽象方法的话,只有方法的声明。如果是一般方法的话,既有方法的声明,也有方法的实现。

4. 使用接口的原因:

(1).没有接口,可插入性就没有保证。因为Java是单继承的。
(2).在一个类等级结构中的任何一个类都可以实现一个接口,如果这个类实现了这个接口那么将会影响到此类的所有子类,但是不会影响到此类的所有父类。
(3).一个类最多有一个父类,但是可以同时实现几个接口。

5. 问题:

在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?

个人理解:

抽象类目的是用来继承的,在定义上,可以没有抽象方法,只是用abstract修饰是没有语法错误的,但是没有哦实际意义。抽象类中的抽象方法是让子类继承抽象类,来实现抽象类中的抽象方法,根据子类的需求分别来实现不同的功能。

相关文章

  • Springboot整合JwtHelper实现非对称加密

    Springboot整合JwtHelper实现非对称加密

    本文主要介绍了Springboot整合JwtHelper实现非对称加密,主要介绍两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • 使用Cloud Toolkit在IDEA中极速创建dubbo工程

    使用Cloud Toolkit在IDEA中极速创建dubbo工程

    这篇文章主要介绍了使用Cloud Toolkit在IDEA中极速创建dubbo工程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Java 中的FileReader和FileWriter源码分析_动力节点Java学院整理

    Java 中的FileReader和FileWriter源码分析_动力节点Java学院整理

    本文给大家分享一段示例程序,通过示例代码可以看出FileReader是基于InputStreamReader实现的,FileWriter是基于OutputStreamWriter实现的,具体程序代码大家通过本文了解下吧
    2017-05-05
  • Java不要再使用!=null判空了!

    Java不要再使用!=null判空了!

    这篇文章主要给大家介绍了关于Java不要再使用!=null判空的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • idea打开项目后无法显示目录结构,只能显示.iml文件问题

    idea打开项目后无法显示目录结构,只能显示.iml文件问题

    这篇文章主要介绍了idea打开项目后无法显示目录结构,只能显示.iml文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • springboot bean扫描路径的实现

    springboot bean扫描路径的实现

    这篇文章主要介绍了springboot bean扫描路径的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 详解Java ReentrantLock可重入,可打断,锁超时的实现原理

    详解Java ReentrantLock可重入,可打断,锁超时的实现原理

    前面讲解了ReentrantLock加锁和解锁的原理实现,但是没有阐述它的可重入、可打断以及超时获取锁失败的原理,本文就重点讲解这三种情况,需要的可以了解一下
    2022-10-10
  • Java中 shuffle 算法的使用

    Java中 shuffle 算法的使用

    本篇文章,小编将为大家介绍,在Java中 shuffle 算法的使用,有需要的朋友可以参考一下
    2013-04-04
  • 使用Java完成Socket文件传输方式

    使用Java完成Socket文件传输方式

    这篇文章主要介绍了使用Java完成Socket文件传输方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 详解Java如何实现加密或者解密PDF文档

    详解Java如何实现加密或者解密PDF文档

    PDF文档加密是一种用于保护文件内容的功能。这篇文章主要介绍了Java实现加密或者解密PDF文档的方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03

最新评论