1.接口和抽象类区别:

(1)实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。
(2)构造函数:抽象类可以有构造函数;接口不能有。
(3)实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
(4)访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。

2.接口抽象类相同点

(1)都是抽象类,都不能实例化。

(2)interface实现类以及abstract class的子类都必须要实现已经声明的抽象方法。

3.接口的使用场景

(1)类与类之前需要特定的接口进行协调,而不在乎其如何实现。

(2)作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。

(3)需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。

(4)需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。

注意:接口中的成员变量必须是public static final?

(1)接口是一种高度抽象的"模版",而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public static的 ,是所有实现类共有的 .。

(2)假如可以是非static的话,因一个类可以实现多个接口,出现重名的变量,无法区分。

(3)接口中如果可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却无法操作这些变量,虽然可以直接修改这些静态成员变量的值,但所有实现类对应的值都被修改了,这跟抽象类有何区别? 又接口是一种更高层面的抽象,是一种规范、功能定义的声明,所有可变的东西都应该归属到实现类中,这样接口才能起到标准化、规范化的作用。所以接口中的属性必然是final的。

(4)在interface里面的变量默认都是public static final 的。所以可以直接省略修饰符:

以下定义方式均正确:

static final int x= 1;

final int x= 1;

int x= 1;

4.抽象类的使用场景

在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。

例如:

(1)定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。

(2)某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。

(4)规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能

注意:

抽象类中不一定包含抽象方法,但是包含抽象方法的类一定要被声明为抽象类。抽象类本身不具备实际的功能,只能用于派生其子类。抽象类中可以包含构造方法,但是构造方法不能被声明为抽象。

接口和抽象类区别以及应用场景相关推荐

  1. java。接口和抽象类区别

    接口和抽象类区别 a.抽象类里可以有非抽象方法    接口里只能有抽象方法 b.接口是抽象类的变体,再接口中所有方法都是抽象的 转载于:https://www.cnblogs.com/zhaozhao ...

  2. 方法的重写和重载,接口和抽象类区别

    方法的重写和重载,接口和抽象类区别,新手入门必看!!!!!要记住 方法的重写和重载 重写 重载 接口和抽象类 说明 方法的重写和重载 重写 在Java程序中,类的继承关系可以产生一个子类,子类继承父类 ...

  3. java的接口和抽象类区别

    转自:深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在 ...

  4. PHP接口与抽象类区别:接口用来扩展应用 抽象用来总结归纳

    1.理解 抽象类:比如男人,女人这两个类,那我们可以为这两个类设计一个更高级别的抽象类 人. 接口:我们可以坐着吃饭,可站着吃饭,可以用筷子吃饭,那么可以把这些吃饭的动作抽象成一个接口 吃饭 一个类只 ...

  5. 接口与抽象类区别和接口jdk8新特性

    jdk8之前特点对比抽象类 1 接口用interface表示,和类是并列的,定义接口就是定义接口的成员 2 接口只能定义公共抽象方法(public abstract)和全局静态最终变量(public ...

  6. 接口和抽象类使用场景

    接口和抽象类的使用动机不同,从而决定是使用接口还是使用抽象类,使用抽象类是为了代码的复用,使用接口是为了实现多态,当不确定使用接口还是使用抽象类时,就从使用目的出发决定,提高代码复用性就是用抽象类,想 ...

  7. C# 接口和抽象类的区别和使用场景

    C# 中的接口和抽象类都是面向对象编程中常见的概念,它们都可以用于定义一组方法和属性,但是它们之间有很多的区别和使用场景. 接口和抽象类都可以被继承,接口和抽象类中的方法和属性都可以被继承和实现.但是 ...

  8. C#中抽象类和接口的区别与应用场景

    一直对这两个基础概念没有很好的认识,在网上发现一个我能够理解的基础概念理解,存一下,反复看. C#中抽象类和接口的区别与应用场景一. 1.抽象类:抽象类是特殊的类,只是不能被实例化;和普通类一样里面什 ...

  9. 【学习Day5】接口和抽象类的区别、作用和使用场景

    目录 一.接口和抽象类的区别? 二.接口和抽象类的作用? 三.接口和抽象类的使用场景? 一.接口和抽象类的区别? 抽象类用abstract 来修饰 接口用interface修饰 抽象类中有构造器 接口 ...

最新文章

  1. 连接池 druid(阿里巴巴的框架)
  2. skywalking告警相关配置
  3. python sort函数排序_Python中排序常用到的sort 、sorted和argsort函数
  4. Linus Torvalds:回顾Linux20年
  5. 测试抽象类和模板方法模式
  6. LeetCode之Max Points on a Line Total
  7. VMware关闭虚拟机系统后不见了
  8. 百度地图个性化模板列表
  9. Leetcode每日一题:52.N-Queens II(N皇后Ⅱ)
  10. LeetCode(811)——子域名访问计数(JavaScript)
  11. POJ NOI MATH-7830 求小数的某一位
  12. import java.sql.date_java.sql.Date日期比较
  13. 慕课软件质量保证与测试(习题集)
  14. 无数本高清古籍善本下载,200多个G
  15. hive中的distribute by、sort by、cluster by
  16. openGL之API学习(五十五)凹凸贴图技术
  17. 【Mqtt】基于paho.mqtt.c库的mqtt客户端实现
  18. webpack的基本使用03
  19. No CUDA runtime is found, using CUDA_HOME=‘/usr/local/cuda:/usr/local/cuda‘
  20. C++重载决议(Overload Resolution)

热门文章

  1. 【转载】eMule电驴使用从入门到精通(5)-------emule菜单说明
  2. 啥牌子的蓝牙耳机舒适度好?佩戴舒适的真无线耳机
  3. zookeeper的下载与安装
  4. js实现全屏,退出全屏功能
  5. I.MX RT1170之FlexSPI(1):FlexSPI功能框图和特性
  6. 培育下属就象雕琢宝玉
  7. 微信小程序开发-短信注册功能
  8. python中表示嵌套语句快_Python编程(8)——if语句的嵌套,语言,程序设计,8if
  9. 中关村地区公益性英语角信息
  10. 数据库助手连接MySQL设置_数据库实验助手概述 - Database Experimentation Assistant | Microsoft Docs...