Java中的抽象

Java中的抽象

抽象是隐藏实现细节并仅向用户显示功能的过程,它只向用户显示基本内容并隐藏内部细节;

抽象的作用:

  • 1.你可以专注于对象的作用而不是对象的实现
  • 2.抽象方法(协议)一旦建立不会随意更改,使结构更稳定,子类或实现类只是在此协议上进行拓展

抽象在java中的实现:

  • 1.接口 --> 抽象比例 100%
  • 2.抽象类 --> 抽象比例 0%到100%

1.Interface

接口的作用:

  • 1.它用于定义抽象行为。
  • 2.通过接口可以实现多重继承。
  • 3.它可用于实现松耦合。

从Java 8开始,可以在接口中使用默认和静态方法。
从Java 9开始,可以在接口中使用私有方法。

2.Abstract Class

抽象类的作用:

  • 1.抽象类常用来继承,具体类不是用来继承的。
  • 2.抽象类应当拥有尽可能多的共同代码。
  • 3.抽象类应当拥有尽可能少的数据。

3.差异

抽象类与接口类似。您无法实例化它们,并且它们可能包含使用或不使用实现声明的混合方法。
但是,对于抽象类,您可以声明非静态和最终的字段,并定义public,protected和private具体方法。
使用接口,所有字段都自动为public,static和final,并且您声明或定义的所有方法(作为默认方法)都是公共的。
此外,您只能扩展一个类,无论它是否是抽象的,而您可以实现任意数量的接口。

你应该使用哪些,抽象类或接口?

如果任何这些语句适用于您的情况,请考虑使用抽象类:
希望在几个密切相关的类之间共享代码。
希望扩展抽象类的类具有许多常用方法或字段,或者需要除公共之外的访问修饰符(例如protected和private)。
想声明非静态或非最终字段。这使您可以定义可以访问和修改它们所属对象的状态的方法。

如果任何这些语句适用于您的情况,请考虑使用接口:
希望不相关的类可以实现您的接口。例如,接口 Comparable以及 Cloneable被许多不相关的类来实现。
希望指定特定数据类型的行为,但不关心谁实现其行为。
希望利用类型的多重继承。

4.应用

在设计模式中的应用:

  • 1.模板模式 – 抽象类
  • 2.工厂模式 – 接口
  • 3.代理模式 – 接口
  • 4.适配器模式(将两个不想干的接口成一个) – 接口+抽象类

5.总结

总结:
抽象类表示一个模板,接口表示一个契约。
模板填写之后才会有意义,契约需要遵守。
抽象类和接口类的实例化,通过多态性(向上转型,向下转型),所调用的全部方法,都是被覆写过的方法。
开发中,一个类永远不要去继承一个已经实现好的类,要么继承抽象类,要么实现接口,如果两个类同时都可以使用的话,优先使用接口,避免单继承的局限。

在这里插入图片描述

参考:
[ 1 ].https://www.javatpoint.com/difference-between-abstract-class-and-interface
[ 2 ].https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值