欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android面试题: 抽象类和接口解析

程序员文章站 2022-04-04 21:23:19
android面试题: 抽象类和接口解析。 1. 什么是抽象类 在面向对象中,我们通过类来描述事物,这个描述可以是抽象的,因为不可能通过类描述所有的属性和行为,可能同一类事物的不同个体有着行为上的差...

android面试题: 抽象类和接口解析。

1. 什么是抽象类

在面向对象中,我们通过类来描述事物,这个描述可以是抽象的,因为不可能通过类描述所有的属性和行为,可能同一类事物的不同个体有着行为上的差异。
例如我们想用一个类描述鸟的所有基本属性和行为,而所有的鸟都继承自这个类,我们可以把它称为基类。
而鸟的叫声是有差异的,我们很难在基类中定义鸟的这个行为,这时候我们就需要用到抽象方法了,将鸟叫这个行为用抽象方法描述,让子类对象自己去实现,而包含抽象方法的类也必须声明为抽象的,这就是抽象类。

总的来说就是:
抽象类可以使用抽象的方式描述事物的行为,具体的行为则让子类去实现。

2. 什么是接口

接口是比抽象类更加抽象的东西,它里面所有方法都是公开抽象的。接口只是提供了一个形式,而为提供任何具体实现。
用一个很形象的方式来描述接口就是:设计图。它可以和抽象类一样当作基类定义,但是它不包含任何实现。而它更有用的一个作用是用来作为类与类之间的“协议”,因为任何使用某特定接口的代码都知道它有哪些方法功能可以使用,而且仅仅需要知道这些。

3. 抽象类和接口的区别

用法和定义上的区别就不多说了,大家都知道,而这里主要说下它们的作用。

抽象类的主要作用是让子类去实现它的某一个方法,让子类提供某个实例,或者表现出不同的形式,例如listview中baseadapter的getview方法。

而接口的主要作用是定义一个类与类之间的“协议”,它更像是被当作一个工具使用,实现类与类之间的解耦。也可以使用接口代替抽象类,但是你要确定这是不是必须的,否则会带来不必要的复杂性。

简单一句话区别抽象类在于:
抽象类的作用在于描述某一行为的抽象性,接口的作用在于定义“协议”。在没有考虑到这个“协议”是否有用时,不要滥用接口。如果你认为接口是扩展一个类的功能,这并没有错,但是你要确定这个功能是会被其它对象给用到,并且该对象也只专注于这个功能。

4. 难

好难描述,面试官问道这种问题的话就见招拆招好了。需要明确知道什么时候应该用抽象类什么时候应该用接口就行了。