抽象类和接口怎么区分

首先搞清楚抽象类和接口是什么?
他们之间有什么联系?
还有怎么区分它们?
最后适合他们各自的场景在哪里?

抽象类:

定义:

简单一句话就是被abstract修饰的类。

作用:

强制让子类必须重写抽象类的抽象方法(体现了一种约束和规范作用)

步骤:
  1. 抽象类不能创建对象,但是能被继承
  2. 继承子类继承的抽象类,必须要重写抽象方法
  3. 创建子类的对象,调用重写的抽象方法
特点:
  1. 抽象类不能创建对象
  2. 抽象类有构造方法,并且可以让构造方法给成员变量赋值
  3. 抽象方法必须放在抽象类中
  4. 子类必须重写抽象类中的所有抽象方法,如果只是重写抽象一部分,那还是一个抽象方法

接口:

定义:

接口是比抽象类更加纯粹的抽象。接口中只有抽象方法与常量(1.8之前)

作用:

相当于一些标准,支持多个接口

使用步骤:
  1. 创建类实现接口
  2. 重写接口的抽象方法
  3. 创建实现类的实现方法
特点:

1.接口中的抽象方法:可以省略public abstract

2.接口中的常量:可以全部或者部分省略public final static

3.类可以多接口实现

4.接口可以多继承接口 作用:(1)模块化 (2)提高复用性

抽象类和接口的联系:

  1. 都不能被实例化
  2. 都位于继承树的顶端,用于被其他类实现和继承
  3. 都可以含有抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法

抽象类和接口的区别:

在语法层面上:

1.类与类只单继承,类可以有多个接口,接口与几口可以多继承
2.抽象类的成员变量可以是各种类型,而接口只能public static final 变量
3.接口只包含抽象方法,静态方法和默认方法,抽象类则完全包含普通方法
4.抽象类可以提供成员方法实现细节,而接口只能存在public abstatic(1.8之后接口可以在默认方法里面实现)
5.抽象类的抽象方法的权限修饰符可以是public,protected,default类型,后者只能是public

在设计层面上:

1.抽象类是对事物整体进行抽象,接口却是对事物局部进行抽象
继承是一个"是不是"的关系,接口是一个"有没有"的关系
2.抽象类 ===》模板式设计 , 接口 ===》辐射式设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值