接口,抽象类

抽象类和接口

抽象类

abstract
  • 抽象方法一定在抽象类中
  • 抽象类和抽象方法肯定是被abstract修饰的
  • 抽象类不可以用new关键字实例化,实例化一个抽象类没有任何意义
  • 如果一定要用抽象类,那么可以使用多态的方式
  • 虽然抽象类不能实例化,但是也是有构造器的
  • 抽象方法不能被private修饰
  • 抽象方法不能被static修饰
总结:
  1. 抽象类就是用来被继承的
  2. 抽象方法就是用来被实现的
  3. 实现多态

接口

Interface:定义接口
Implements:实现接口
  • 接口中的变量全部是静态常量
  • 接口中的方法默认是公开抽象方法(public abstract),就算不写,也会自动加上public abstract
  • JDK1.8之后可以手动声明默认方法和静态方法
  • 接口可以多实现,一个类可以实现多个接口
  • 接口与接口之间使用extends
  • 一个子类可以继承一个父类,实现多个接口

抽象类和接口的区别和联系:

  1. 抽象类和接口都不能直接实例化。抽象类变量只能引用子类对象,接口变量只能引用实现类对象。
  2. 接口中只能定义抽象方法,不能定义具体方法,但在抽象类中可以定义抽象方法,可以定义具体方法。
  3. 接口中定义的变量是公共的静态的常量,而抽象类中定义的变量是普通属性。
  4. 一个类只能继承一个父类,但是可以实现多个接口。

总结:

区别:
接口抽象类
interface&Implementsabstract
只包含抽象方法,静态方法,默认方法,不能为普通方法提供实现完全包含普通方法
只能定义静态常量,不能定义普通成员变量既可以定义普通成员变量,也可以定义静态常量
不包括构造器可以包含构造器
不能包含初始代码块可以包含初始代码块
多实现单继承

#### 联系:

- 都不能被实例化。
- 用于实现和继承。
- 都可以包含抽象方法。


#### 区别:

1. 抽象类要被子类继承;接口要被类实现。
2. 接口只能做方法声明;抽象类中可以作为方法声明,,也可以做方法实现。
3. 接口里定义的变量只能是公共的静态的常量;抽象类中的变量是普通变量。
4. 接口是设计的结果;抽象类是重构的结果。
5. 抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别更高。
6. 抽象类可以有具体的方法和属性;接口只可以有抽象方法和不可变常量。
7. 抽象类主要用来抽象类别;接口主要用来抽象功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值