Java 抽象类和接口的区别

抽象类

抽象类用来描述一种类型应该具备的基本特征与功能, 具体如何去完成这些行为由子类通过方法重写来完成。关键字是abstract

抽象类中不一定必须包含抽象方法,也可以有非抽象方法,但有抽象方法的类一定是抽象类

抽象类小结
1. 抽象类不能被实例化,如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。
2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。
3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。
4. 构造方法,类方法(用static修饰的方法)不能声明为抽象方法。
5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

接口(interface)

官方解释: Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

默认语法 public void interface
接口中的方法默认语法 public static final

为什么要使用接口?
1.接口是用来描述一种抽象
2.Java不支持多继承,所以可以实现多个接口
3.接口可以实现降低耦合
举个栗子

例如,电脑的USB插口,生产厂商只规定了USB接口的型号,但并不知道消费者要在上面使用什么,消费者可以根据实际的需求进行使用,可以插U盘,可以插鼠标也能使用键盘等,这就类似于接口的定义以及接口的实现。

接口小结
1.一个接口可以继承于另一个接口,或者另一些接口,接口也可以继承,并且可以多继承。
2.一个类如果要实现某个接口的话,那么它必须要实现这个接口中的所有方法。
3.接口中所有的方法都是抽象的和public的,所有的属性都是public,static,final的。

两者的相同点和不同点

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

接口

  1. 只包含抽象方法、静态方法和默认方法,不能为普通方法提供方法实现
  2. 只能定义静态常量,不能定义普通成员变量
  3. 不能包含构造器
  4. 不能包含初始化块
  5. 多实现
  6. like a 关系

抽象类

  1. 可以包含普通方法
  2. 既可以定义普通成员变量,也可以定义静态常量
  3. 可以包含构造器(让抽象类的子类调用这些构造器来完成属于抽象类的初始化操作)
    
  4. 可以包含初始化块,单继承
  5. is a关系
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值