Java抽象类与接口

 在定义一个超类时,所谓的超类就是我们所说的父类。可以不给出其方法的具体实现,而是由子类去负责去实现该方法,在利用多态进行调用。因此,将没有给出方法实现部分的超类称为抽象类。抽象类不能生成相应的对象,没有给出实现的方法称为抽象方法。关键字abstract用于表明抽象类和抽象方法,注意abstract方法不能用private修饰,因为子类不能够继承private方法。

当某个子类继承其超类的时候,如果没有将其超类中的所有抽象方法都实现,那么该子类也被抽象化,根据规定,虽然可以生成该子类的对象,但不能够调用这些抽象方法,因此不适合使用这种方式。

上面的的抽象类的基础实现方法,注意的是抽象类不能使用final修饰,因为定义抽象类的目的就是要子类继承它并对其中的抽象方法进行覆盖。

 接口实际上是一组抽象方法和常量的集合。接口本身的访问控制只能是public和默认的,不能是private和protected。因为接口的目的就是让其他的类来实现其中的方法或使用其中的常量,因此,接口中的方法永远是public、final和static的。为接口定义方法和常量时,不需要加任何修饰符。

 接口的定义和类的定义相似,注意的是使用的关键字是interface而不是class。接口单独创建,不能放在类里面创建。如下:

 接口也可以继承,并且可以实现多重继承,即一个接口继承多个接口,如下列代码:

 其中接口myInterface继承了myInterface2和myInterface3。没有myInterface中将有myInterface2和myInterface3两个接口中的常量和方法。如果myInterface2和myInterface3中存在名称相同、参数相同的方法,那么在返回值上也必须相同。

 一但定义好借口,就可以在程序中使用接口。下面是一个计算三角形、矩形和正方形的面积并输出的程序。程序有5个类,类Triangle、Rectangle、和Square分别表示三角形、矩形、正方形,抽象类Fifure提供一个计算面积的抽象方法。如下:

首先定义一个抽象类用来继承,在实现方法,来计算面积。

由于正方形和矩形计算的面积一样,所以只需要用关键字super返回边长,不需要在重新写计算面积的方法,因为继承会继承所有的方法。

 而三角形的面积计算方式不太一样,只能继承抽象类并重写。大致的代码都大同小异。下面是这个程序的主类和结果。因为要计算三个类的面积,所以通过数组,来实例化三个子类,并且循环输出对应的值。

 最后,需要注意的是,公共类和公共接口的代码要放在不同的文件中,类在实现一个接口的时候,应该实现接口的所有方法;否则,这个类就是抽象类,应该加上abstract关键字,更好的区分。还有就是抽象类不能实例化,抽象方法必须由子类重写。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值