1.java基础面试题 接口和抽象类的区别

标题 1.java基础面试题 接口和抽象类的区别

接口和抽象类的理解

这里是引用

含有abstract修饰符的类即为抽象类,抽象类不能创建实例对象。含有抽象方法的类必须定义为abstract class。在abstract class中,方法不必是抽象的,但是抽象方法必须在具体子类中实现,所以,不能有抽象构造方法或抽象静态方法。子类如果没有实现抽象父类中的所有抽象方法,则必须定义为abstract类型。抽象类需要被继承才能使用,而被final修饰的类无法被继承,所以abstract和final是不能共存的。

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

接口可以继承接口。

抽象类可以实现(implements)接口。

抽象类可以继承实体类。但和实体类的继承一样,也要求父类可继承,并且拥有子类可以访问到的构造函数。其实Object就是个实体类,Java的API文档里,每个抽象类的条目里都明确写着直接或间接继承自Object,所以这点是没有疑问的。

抽象类中可以有静态的main方法。

接口和抽象类的区别

1.默认方法:抽象类可以有默认的方法实现,接口中不存在方法的实现,接口是完全抽象的。
2.实现方式:子类使用extends关键字来继承抽象类,如果子类不是抽象类,子类需要提供抽象类中所声明的所有方法的实现。而接口的子类使用implements来实现接口,需要提供接口中声明的所有方法实现。
3.构造函数:抽象类中可以有构造函数,接口中不能。
4.和正常类区别:抽象类不能被实例化,接口则是完全不同的类型。
5.访问修饰符:抽象方法可以有public,protected和default等修饰,接口默认是public,不能使用其他修饰符。
6.多继承:一个子类只能继承在一个抽象类,而一个子类可以实现多个接口。
7.添加新方法:想在抽象类中添加新方法,可以提供默认的实现,因此可以不修改子类现有的代码。如果往接口中添加新方法,则子类中需要实现该方法。

这里是引用

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

1.如果拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。

2.如果想实现多重继承,那么必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此就可以使用接口来解决它。

3.如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值