接口和和抽象的区别总结

抽象类

类可以定义为抽象类

有抽象方法的类都是抽象类

抽象方法应用场景:

  1. 方法的实现没想好

  2. 无法统一子类的实现

如果父类中有抽象方法,子类不实现,子类必须为抽象类

抽象类不能被实例化

  1. 抽象类不能用abstract修饰属性、私有方法、构造器、静态方法、final的方法
  1. 属性:Abstract只能修饰类,方法。属性(成员变量)都有具体的值。
  2. 私有方法:如果能修饰,子类可以实现私有方法。私有方法只有本类能访问到,子类没有访问权限,既然不能访问就不能实现,子类必须定义为抽象类,子类继承类也必须是抽象类。子类中没有类能定义为非抽象类,无法用构造方法创建对象。
  3. 构造方法:构造方法特点:和本类类名相同。构造方法在子类中不能被重写。如果能够修饰构造方法,构造方法在父类中只有声明,需要在子类中重写。所有不能修饰,矛盾
  4. 静态方法:静态方法调用规则:类名.静态方法。如果能修饰,静态方法只能声明,不能有实现。矛盾
  5. Final:final修饰的方法,不能被重写。如果用abstract修饰,目的是让子类实现这个方法。又不能被重写,又要求实现,矛盾

接口应用场景:

  1. 无法统一实现,即使实现了意义也不大
  2. 软件实现流程,详细设计阶段。统一类功能,方法名,返回,参数等信息

接口的特点:

  1. 用 interface 来定义。
  2. 接口中的所有成员变量都默认是由public static final修饰的。
  3. 接口中的所有方法都默认是由public abstract修饰的。
  4. 接口没有构造方法。
  5. 实现接口的类必须提供接口中所有方法的具体实现内容。

抽象类VS接口

相同点:

  1. 接口和抽象类都不能被实例化。只能被其他类实现和继承。
  2. 接口和抽象类都可以包含抽象方法,实现接口和抽象类的类都必须实现这些抽象方法,否则实现的类就是抽象类。

不同点:

  1. 抽象类与接口定义不同:抽象类abstract class ,接口  interface
  2. 一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java的单继承不足
  3. 接口不包含构造函数;抽象类可以包含构造函数,抽象类里的构造函数并不是用于创建对象,而是让其子类调用这些构造函数来完成属于抽象类的初始化操作。
  4. 接口里只能定义静态常量属性,不能定义普通属性;抽象类里既可以定义普通属性,也可以定义静态常量
  5. 接口里不能定义静态方法;抽象类可以定义静态方法
  6. 接口里只能包含抽象方法,不包含已经实现的方法;抽象类则完全可以包含普通的方法。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fugogo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值