今天看到项目中,写了一个抽象类,里面有很多方法继承了这类,当调用这个接口时,采用的是这个抽象类去调方法的,当时一想,这个不就是我们说的Java的多态的特征:

继承:存在继承关系的子类和父类

重写:子类对父类的某些方法进行重写(多态下调用的是子类重写的方法)

父类引用指向子类对象:即向上转型,将子类的引用赋给父类的对象

然后,我们调用的时候,就是通过父类的对象去调用方法的。但是,一想接口好像也可以实现多态,并不是抽象类才可以,我们只要多个类实现同一个接口,也可以实现多态,

因此,转着转着,就转到了接口和抽象类的区别了。

接口

接口是一序列方法的声明,一序列方法特征的集合,一个接口只有方法的形状而没有方法的具体实现,接口是Java面向对象提供的一种机制。

Java语言是一种单继承的,在类的继承中可以实现多个接口代替了多继承

接口的申明:

public interface 接口类名称{

}

抽象类

抽象类是描述许多类的公共的地方,它是一个基类,在项目中主要用作很多类的基础类,比如对表中的增删改查,我们可以抽取一个基类来,然后让表结构的类去继承它,这样就省的我们去写那些基本的增删改查了

抽象类的申明:

public abstract 抽象类名称{

}

接口和抽象类的区别

接口和抽象类还是有一定区别的,接口可以看做是抽象类的一种更抽象化,接口是对动作(行为)的抽象,抽象类是对类的抽象,简单的来说,就是接口注重的是方法,而抽象类注重的是属性和方法

接口:

方法完全抽象的,并且方法必须是public,如果写成其他的编译时会报错,如果不写,则默认方法是public abstract

子类用implements来实现接口,子类需要实现接口中的所有方法

接口不可以new操作符实例化一个接口,但可以声明一个接口变量

接口可以继承一个或者多个接口

接口可以有变量,但是这个变量是不可以变的变量,它会自动的变为public static final

抽象类:

可以有方法的实现,但是这个方法不是abstract方法

子类用extends来继承抽象类,如果子类不是抽象类,则子类必须实现抽象类中的所有抽象方法,也可以实现抽象类中的非抽象方法

抽象类中可以有构造器

抽象类中可以有public,protected和default修饰符

抽象类可以继承一个类和实现多个接口

总的区别是:

抽象类可以有构造函数,接口不可以有构造函数

抽象类中可以有普通成员变量,接口中没有普通成员变量,只能有常量

抽象类中的方法可以被static修饰,接口中的方法不可以被static修饰

抽象类中可以有普通方法和抽象方法,接口中的方法全是抽象方法

抽象中的方法可以被public,protected等修饰符修饰,接口中的方法全都是public abstract的方法,如果省略修饰符,则默认的也都是public abstract修饰

一个类只能继承一个抽象类,接口可以被多实现,即一个类只能继承一个类,可以实现多个接口

什么时候使用接口,什么时候使用抽象类

如果你想拥有一些方法,并且这些方法有默认实现,那么久使用抽象类

如果你想实现多继承,那么就是用接口吧,java不支持多继承,但是可以实现多个接口

接口主要用于模块与模块之间的调用

抽象类主要用于当做基础类使用,即基类

Java接口和抽象类的区别的更多相关文章

  1. JAVA基础知识|java虚拟机(JVM)

    一.JVM简介 java语言是跨平台的,兼容各种操作系统.实现跨平台的基石就是虚拟机(JVM),虚拟机不是跨平台的,所以不同的操作系统需要安装不同的jdk版本(jre=jvm+类库:jdk=jre+开 ...

  2. Java基础知识强化18:抽象类、接口的区别 和 选择性实现接口方法

    1.抽象类和接口的区别 抽象类里面可以有非抽象的方法(可以没有抽象方法),接口里只能有抽象方法. 抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号.  抽象类(abstract c ...

  3. java基础知识(6)---抽象类与接口

    抽象类: abstract抽象:不具体,看不明白.抽象类表象体现.在不断抽取过程中,将共性内容中的方法声明抽取,但是方法不一样,没有抽取,这时抽取到的方法,并不具体,需要被指定关键字abstract所 ...

  4. [java基础知识]java安装步骤

    jre:  java运行环境.  jre =  java虚拟机 + 核心类库(辅助java虚拟机运行的文件).如果只是运行java程序,只需要安装jre.    jdk: java开发工具集   jd ...

  5. java基础知识——Java的定义,特点和技术平台

    (作者声明:对于Java编程语言,很多人只知道怎么用,却对其了解甚少.我也是其中一员.所以菜鸟的我,去查询了教科书以及大神的总结,主要参考了<Java核心技术>这本神作.现在分享给大家!) ...

  6. JAVA基础知识总结7(抽象类 | 接口)

    抽象类: abstract 1.抽象:不具体,看不明白.抽象类表象体现. 2.在不断抽取过程中,将共性内容中的方法声明抽取,但是方法不一样,没有抽取,这时抽取到的方法,并不具体,需要被指定关键字abs ...

  7. java 基础知识(java web 方面的)

    1.java面向对象的基本特征:封装性,多态性,继承性. 2.Java的泛型:iterator接口主要有hasnext()方法,next()方法,remove()方法:collection接口继承了i ...

  8. Java基础知识 String StringBuffer StringBuilder三者的区别(面试题)

    相同点:String.StringBuffer.StringBuilder最终底层存储与操作的都是char数组,StringBuffer和StringBuilder都继承了AbstractString ...

  9. [转] Java基础知识——Java语言基础

    http://blog.csdn.net/loneswordman/article/details/9905931 http://blog.csdn.net/wanghuan203/article/d ...

  10. java基础知识精华

    转载:https://www.jianshu.com/p/6c078abb720f java基础知识 java内存模型 java运行时数据区域 hashMap 如何解决冲突 存储方式 冲突达到一定数量 ...

随机推荐

  1. Win7下VS2008破解方法

    在Win7系统下,无法像xp下通过“控制面板”卸载的方法重新输入序列号来破解VS2008. 但可以通过以下几个步骤来破解: 1.首先需要安装VS2008,可以安装VS2008专业版90天试用版或VS2 ...

  2. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  3. ACM: Gym 101047E Escape from Ayutthaya - BFS

    Gym 101047E Escape from Ayutthaya Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I6 ...

  4. HTML解析器HtmlAgilityPack的一些使用总结(C#)

    哎~本来这些总结是作为使用时的快速备注,但是用不上了.实际应用当中HtmlAgilityPack的可靠性不太稳定,一主要问题是:-> 一些字符会出现乱码或者变成'?',如韩语字符.由于我是已经有 ...

  5. 免费制作gif图片工具

    怎样制作gif图片在你的blog里面呢? 今天给大家推荐一款免费的gif制作软件:GifCam 上面用到的下载地址: http://downloads.tomsguide.com/GifCam,030 ...

  6. 转载:Chrome调试折腾记_(1)调试控制中心快捷键详解!!!

    转载:http://blog.csdn.net/crper/article/details/48098625 大多浏览器的调试功能的启用快捷键都一致…按下F12;还是熟悉的味道;  或者直接 Ctrl ...

  7. Editbox之三个框框

    自重装系统后,电脑中两个版本的eclipse都驾崩了,起个VS也要花费半年的时间(观赏收费),所以就运用已有的工具STS编了代码,不能用JavaFX很是遗憾,只能在网上找了代码,自己修改后完成了测试. ...

  8. Codeforces Round #361 (Div. 2) C

    C - Mike and Chocolate Thieves Description Bad news came to Mike's village, some thieves stole a bun ...

  9. ios设备中openGL所支持的最大纹理尺寸

    这几天碰到一个在iphone4上显示图片未黑色矩形的bug,在其他机器上都正常 最后发现是图片打包尺寸的关系,iphone4无法读取2048以上大小的单个图片,所以其中的图片都显示成了黑色,希望对碰到 ...

  10. 最小生成树 prime zoj1586

    题意:在n个星球,每2个星球之间的联通需要依靠一个网络适配器,每个星球喜欢的网络适配器的价钱不同,先给你一个n,然后n个数,代表第i个星球喜爱的网络适配器的价钱,然后给出一个矩阵M[i][j]代表第i ...