接口和抽象类的区别

84:抽象类
**抽象类:**在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类的特点:
a、抽象类不能被实例化只能被继承;
b、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法;
c、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public;
d、一个子类继承一个抽象类,则子类必须实现父类抽象方法,否则子类也必须定义为抽象类;
e、抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用。
85:接口(interface)
接口定义的基本语法:

【修饰符】interface 接口名 extends 父接口1,父接口2...{
}

a.接口支持多继承,即一个接口可以extends多个接口,间接的解决了Java中类的单继承问题;一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类;
b.java8以上的版本中允许在接口中定义默认方法、类方法;不能定义构造方法和初始化块;
c.一个类可以实现多个接口;
d.接口的修饰符只能为public或者default;
e.接口成员变量默认为public static final,必须赋初值,不能被修改;
f.接口定义方法只能是抽象方法、类方法和默认方法,因此如果不是定义默认方法,系统将自动为普通方法增加abstract修饰符;定义接口里的普通方法时不管是否使用public abstract修饰符,接口里的普通方法总是使用public abstract来修饰。
85:使用接口(implements)
类实现接口的语法格式如下:

【修饰符】class 类名 extends 父类 implements 接口1,接口2...{
}

接口和抽象类的区别:
相同点
(1)都不能被实例化 ,他们都位于继承树的顶端,用于被其他类继承和实现。
(2)接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。

不同点
(1)接口里只能包含抽象方法和默认方法,不能为普通方法提供方法实现;抽象类则完全可以包含普通方法;
(2)接口里不能定义静态方法,抽象类可以定义静态方法
(3)接口里只能定义静态常量,不能定义普通成员变量,抽象类则都能定义;
(4)接口里不包含构造器,抽象类包含。抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。
(5)接口里不能包含初始化块,但抽象类可以
(6)一个类最多只能有一个直接父类,包括抽象类。但一个类可以直接实现多个接口,通过实现多个接口可以弥补java单继承的不足。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值