详解抽象类与接口

 

面试的时候有很多面试官会问抽象类与接口的区别,实际上这个东西在实际开发中很少考虑的,但是为了面试还得考虑一下。

先谈一下抽象类:

1,抽象类是不能被直接实例化的,也就是说不能使用new这个关键字实例化,如果使用某抽象类实际上是用继承的方式,去实现它内部的方法和具体的变量,切记在定义抽象类内部的变量的时候变量值都是null,而且方法也都是抽象的,不能带实现的。

2,如果某类继承了抽象类,那么就等重写里面的方法和实现里面的变量,否则该类也得写成抽象类。

3,抽象类中的方法不一定都是抽象的。

       abstract class A{ public abstract void F();}

  abstract class B extend A{ public void G() {}}

  class C extend B{ public override void F() { // actual implementation of F }}

A是抽象类。里面有抽象方法F(),类B继承抽象类A,但是没实现F()方法,所以类B也是抽象的,类C又继承了B却实现了类A里的方法,所以类C就不是抽象类了,类是可以多重继承的

好了谈一下接口:

接口实际上也是抽象类但是和抽象类还是与差别的:

1,类可以实现无数个接口,但是只能继承一个父类或者抽象类,

2,抽象类中的方法未必都是抽象的,但是接口中的方法都是未实现的且都是public的类型的。否则不能被外部调用且没意义。

3.最重要的区别就是“抽象类是对象的抽象,然而接口是一种行为规范"。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值