Java基础——接口的继承与抽象类

实施接口中,我们利用interface语法,将interface从类定义中独立出来,构成一个主体。interface为类提供了接口规范

继承中,我们为了提高程序的可复用性,引入的继承机制。当时的继承是基于类的。interface接口同样可以继承,以拓展原interface。

 

接口继承

接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型。比如,我们以Cup作为原interface:

interface Cup { void addWater(int w); void drinkWater(int w); }


我们在继承Cup的基础上,定义一个新的有刻度的杯子接口,MetricCup

接口如下:

interface MetricCup extends Cup { int WaterContent(); }

我们增添了一个新的方法原型WaterContent(),这个方法返回一个整数(水量)。

 

interface的多重继承

在Java类的继承中,一个衍生类只能有一个基类。也就是说,一个类不能同时继承多于一个的类。在Java中,interface可以同时继承多于一个interface,这叫做多重继承(multiple inheritance)

比如我们有下面一个Player接口:

interface Player { void play(); }

 

我们新增一个MusicCup的接口。它既有Cup接口,又有Player接口,并增加一个display()方法原型。

interface MusicCup extends Cup, Player { void display(); }

 

(如何使用interface,见实施接口)

 

抽象类

在生活中,我们会有一些很抽象的概念。这些抽象的概念往往是许多类的集合,比如:

  • 粮食 (可以是玉米、小麦、大米)
  • 图形 (可以是三角形、圆形、正方形)

再比如,我们之前举出了例子:

  • 人类 (可以是男人、女人)

在组织这样的关系时,我们可以使用继承,比如:

根据我们的常识:

  • "Food类的对象"的说法是抽象的。这样一个对象应该是属于Corn, Rice, Wheat子类中的一个。
  • Food类有eat()方法 (食物可以吃)。然而,这样的一个动作是抽象的。粮食的具体吃法是不同的。比如Corn需要剥皮吃,Wheat要磨成面粉吃。我们需要在每个类中覆盖Food类的eat()方法。

 

抽象与具体

 

Java中提供了抽象类(abstract class)的语法,用于说明类及其方法的抽象性。比如:

复制代码
abstract class Food { public abstract void eat();
public void happyFood();
{
System.out.println("Good! Eat Me!");
} }
复制代码

类中的方法可以声明为abstract,比如上面的eat()。这时,我们不需要具体定义方法,只需要提供该方法的原型。这与接口类似。当我们在比如Corn类中继承该类时,需要提供eat()方法的具体定义。

类中的另一个方法happyFood()并不是

当一个类中出现abstract方法时,这个类的声明必须加上abstract关键字,否则Java将报错。一个abstract类不能用于创建对象。

 

抽象类的继承

我们可以像继承类那样继承一个抽象类。我们必须用完整的方法定义,来覆盖抽象类中的抽象方法,否则,衍生类依然是一个抽象类。

抽象类的定义中可以有数据成员。数据成员的继承与正常类的继承相同。

 

总结

interface继承,多重继承

abstract method, abstract类

———————————————————————————————————————————————————————————————————————————————————————————————————————————————————

学习Java的同学注意了!!! 
学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:338412454 我们一起学Java!

转载于:https://my.oschina.net/abcijkxyz/blog/850839

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值