抽象类(abstract class)和接口(interface)的区别

在介绍两者的区别的时候,需要先了解一下两者的定义:

抽象类:简单粗暴的描述是包含抽象方法的类,但是这样定义并不准确,因为抽象类也可以不含有抽象方法,即使用abstract修饰的类必为抽象类,一定要注意:一个类如果含有抽象方法,则该类一定为抽象类;但是抽象类并不一定含有抽象方法。抽象类是不能被实例化的。

接口:泛指供其他类调用的方法或者函数。接口中的方法均为抽象方法,接口也是不能被实例化的。

抽象类和接口的区别:

1.抽象类中可有构造方法,而接口是没有构造方法的。

2.抽象类中可以有普通的成员变量的,而接口中是没有普通的成员变量的。

3.抽象类中可以含有非抽象的普通方法,而接口中的方法必须为抽象方法,不能含有非抽象的普通方法。

4.抽象类中的抽象方法的访问类型可以为public,protected,而接口中的抽象方法的访问类型只能为public abstract。

5.抽象类中可以含有静态方法,而接口中则没有静态方法。

6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量可以被任意的访问类型修饰,但是接口中的静态成员变量只能被public static final修饰。

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

抽象类和接口的相同点:

1.都不能被实例化。

2.接口的实现类和抽象类的子类都只有实现了其中的方法后才能被实例化。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值