JAVA经典面试题—抽象类与接口的区别

今天简单回顾了一下接口和抽象类,之前感觉概念不深,现在有所加强,给大家分享一下

抽象类

有共同特征,比如每个动物都有饭吃,但是吃的种类又有所不同,比如牛吃草,猫吃猫粮,狗吃骨头,具体的种类有具体的吃法。

又比如,圆形,正方形,三角形,他们都有周长和面积,但是求的方法不一样,这里我们就需要进行一个分别构造。

抽象类就是,将功能概括成一个类,但是功能的实际实现由子类方法自己构造

abstaract关键字:用于修饰类,或者方法的关键字

  • 抽象方法不能有方法体

  • 抽象类中是有构造器的,因为之类对象实例化时需要直接或者间接去调用到父类的构造器

  • 抽象类中可以没有抽象方法,但是抽象方法一定在抽象类中

  • 子类必须实现抽象父类中的所有抽象方法后才可实例化,否则的话应该吧子类也设为抽象类

接口

接口的本质是契约,标准,规范,就像生活中的法律一样,要求大家进行遵守

规范
  • 属性:必须使用public static final 修饰(因为默认只能被这个修饰,可以省略,                        直接   void Persion();)

  • 方法:jdk8之前:必须要声明抽象方法;jdk8:必须要声明静态方法,默认方法;jdk9:声明私有方法

  • 不可以声明:构造器,代码块等

  • JAVA是单继承的,而接口的话一个类可以实现多个接口,有效提高了代码的可扩展性。

  • 类必须要实现(或重写)接口内的所有抽象方法后才可以进行实例化,否则这个类必须要声明为抽象类

  • 接口与接口之间是继承关系,切可以多继承

抽象类和接口的区别

相同点:
  • 都可以声明抽象方法

  • 都不能实例化

不同点:
  • 抽象类必须要有构造器,而接口是没有构造器的

  • 类与类之间是继承关系且是单继承,类与接口之间是实现关系,接口与接口之间是(可多继承)继承关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值