Java面试题-抽象和接口有什么区别

抽象类和接口的相同点

抽象类和接口都是一种抽象的概念,他们都不能实例化他们的类,只能够通过子类的继承实现他们的方法。

不同点

抽象:

定义:抽象方法:这个方法没有具体的实现;

           抽象类:不能完全代表一个具体的对象。(

注意:

1> 使用 abstract 修饰;

2> 抽象类不能进行实例化,但普通类可以;

3> 抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类;

4> 抽象类中可以定义普通的成员变量和成员方法;

5> 抽象类存在的最大意义就是为了被继承,且多了一层编译器的校验;

6> 普通类继承抽象类后要重写抽象类中的抽象方法;

7> 抽象类A继承抽象类B后不需要重写,但当普通类C再继承抽象类A后,要重写所有没被重写的抽象方法;

8> 要满足重写的要求(如static和private不能被重写);

9> final关键字不可能和abstract同时作用在一个类或方法上;

10> 抽象类当中可以存在构造方法,在子类实例化时,会帮助父类的成员进行初始化

接口:

定义:对公共行为的规范标准,是一种引用数据类型。相当于抽象类的进一步抽象。

注意:

1> 使用 interface 定义;

2> 接口中不能有实现的方法,但是静态方法和被default修饰的方法可以实现;

3> 接口中的成员方法默认是public abstract修饰的;

4> 接口中的成员变量默认是public static final 修饰的;

5> 不能通过关键字new来实例化;

6> 类和接口之间使用implement进行关联;

7> 类实现接口后要重写接口中的抽象方法;

8> 接口中存在default方法时可重写可不重写,具体看业务需求;

9> 不论是接口还是抽象类,都有向上转型;

10> 子类实现接口方法时,这个方法一定要public修饰;

11> 接口中没有构造方法和代码块;

12> 当一个类不想实现接口当中的方法时,这个类可以被定义为抽象类;

13> 接口的修饰符可以为abstract、public,不能为protected、private、final。

那么其实这是最基本的内容,当然如果是大厂的话还会问一个问题:

什么时候使用接口和抽象类

除了语法上面的区别,还有语义上的区别。这也可以作为什么情况下区分两者

我个人认为抽象类是描述一种类似概念情况下使用:比如动物,植物等抽象的一种概念的时候使用。大家既定的一种概念我们会使用。

接口的使用我认为在形容一种特征的时候使用。比如飞,跑等。

举个简单的例子:你不会让叫这个行为一个抽象类,把他作为接口会更合适。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值