Java基础--接口和抽象类

时间:2021-11-22 15:58:30

Java基础--接口和抽象类


抽象类

不能实例化对象,但是可以定义构造函数.
实现抽象类,方式有两种---一种:通过匿名内部类,一种是:具体子类
1:抽象类必须使用abstract修饰,抽象方法必须用abstract修饰,抽象方法中不能又具体的实现。
2:抽象类不能被实例化对象的,但是可以定义构造函数,目的是给当前抽象类的私有成员属性赋值目的。(注:一种:通过匿名内部类,一种是:具体子类)
3:抽象方法,必须定义在抽象类中或者接口中。如果有抽象方法就要必然是抽象类或者接口。
4:final不能够abstract共用
5:不能私有private 可以是public protected
6:没有抽象属性的概念
7:抽象类可以继承抽象类,也可以继承普通类,也可以实现接口.

1:是语义上的角度来看,抽象类是从多个具体类中抽象出来的父类,它具有更高层次的抽象,从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为其字类的模板,从而子类设计的随意性。
2:抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展,改造,但子类总体上回大致保留抽象类的行为方式。
3:如果编写一个抽象父类,父类提供多个子类的通用方法,并把一个或多个方法留给器子类实现,这就是模板模式,
4:如果父类中定义的普通方法一般都是给所有子类调用的方法,或者私有方法给自己调用的方法。
5:抽象方法的类一定抽象类,抽象类不一定有抽象方法

接口:

抽象类是从多个类中抽象出来的模板,如果将这种抽象进行更彻底,那么就是--接口(interface)
1:接口中不能包含普通方法,接口里的所有方法都是抽象方法,(jdk1.8后对接口进行了改进吗,允许定义默认方法,默认方法可以提供方法的实现。)
2:接口是从多个相似类中抽象出来的规范,接口不提供任何实现,接口体现的是规范和实现分离的设计哲学。
3:接口让规范和实现分离,正是接口的好处,让软件系统的各组件之间面向接口耦合,是一种松耦合的设计。例如主机板上提供了一个pci插槽,只要一个显卡遵守PCI接口规范就可以插入PCI插槽内。与主机板正常通信,至于这块显卡是哪个厂商制造的,内部是如何实现的,主板无须关心。
类似的软件系统的各模块之间也应该采用这种面向接口耦合,从而尽量降低个模板之间的耦合,为系统提供更好的可扩展性和可维护性。
4:接口不能继承抽象类和类,只能继承接口
5:修饰符可以是public或者缺省的 ,默认采用缺省的访问修饰符。级只有在相同包结构下才可以访问接口方法。
接口和抽象类:

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

不同点:
1:接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类可以有普通方法提供方法实现。
2:接口只能定义静态常量,不能定义成普通成员变量,抽象都可以。
3:接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成抽象类成员属性赋值和初始化的目的。
4:接口不能包含代码块,抽象类中可以包含代码块。
5:一个类最大只能有一个直接父类,包括抽象类,但一个类可以直接实现多个接口,通过实现多个接口来弥补Java中单继承的概念

接口和类公共写作完成了:Java中的单一继承,多实现的概念,单一继承指的是类和类(抽象类的)继承,实现讲的是接口<span style="font-family: Arial, Helvetica, sans-serif;">。</span>
http://www.cnblogs.com/dolphin0520/p/3811437.html

接口的作用:

1:通常接口是用来定义实现类的外观,也就是实现类的行为。接口相当于一份契约。根据外部应用需要的功能,约定了实现类应该实现的功能,但是具体的实现类实现接口约定的功能外,还可以根据需要实现一些其他的功能。是允许的,也就是说实现类的功能包含但不仅限于接口。
2:接口的思想:就是封装隔离,通过提到封装是指对数据的封装,但是这里的封装是指“对隔离体的封装”或者是对“被隔离体的封装”。而隔离是值外部调用和内部实现,外部调用只能通过接口进行调用,而且外部调用是不知道内部具体的实现的,也就是说,外部调用和内部实现是被接口隔离开的。
3:由于外部调用和内部实现被接口隔离开了,那么只要接口不变,内部实现的变化就不会受到影响到外部应用,而从的系统更加灵活,具有更好的扩展性和可维护性,也就
是说“接口是系统可插拔行的保证”

在开发中接口和抽象类的选择的标准:
既然接口是一种特殊的抽象类,那么在开发中,何时选用接口,何时选用抽象类,对于它们的选择,在开发中是一个很重要的问题,
1:优先选择接口。
2:在如果下情况下选择抽象类,既要定义子类的行为,又要为子类提供公共的功能。