Java基础教程之接口的继承与抽象类

 更新时间:2014年09月01日 10:42:43   投稿:junjie  
这篇文章主要介绍了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,见实施接口)

抽象类

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

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

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

1.人类 (可以是男人、女人)

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

根据我们的常识:

1."Food类的对象"的说法是抽象的。这样一个对象应该是属于Corn, Rice, Wheat子类中的一个。

2.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实现ATM系统超全面步骤解读建议收藏

    Java实现ATM系统超全面步骤解读建议收藏

    这篇文章主要为大家详细介绍了用Java实现简单ATM机功能,文中实现流程写的非常清晰全面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • ehcache开源缓存框架_动力节点Java学院整理

    ehcache开源缓存框架_动力节点Java学院整理

    Ehcache是现在最流行的纯Java开源缓存框架,这篇文章主要介绍了ehcache框架的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • springboot实现异步任务

    springboot实现异步任务

    这篇文章主要为大家详细介绍了springboot实现异步任务,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • swagger注解@ApiModelProperty失效情况的解决

    swagger注解@ApiModelProperty失效情况的解决

    这篇文章主要介绍了swagger注解@ApiModelProperty失效情况的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java编程实现基于TCP协议的Socket聊天室示例

    Java编程实现基于TCP协议的Socket聊天室示例

    这篇文章主要介绍了Java编程实现基于TCP协议的Socket聊天室,结合实例形式详细分析了java基于TCP协议的Socket聊天室客户端与服务器端相关实现与使用技巧,需要的朋友可以参考下
    2018-01-01
  • Spring Boot XSS 攻击过滤插件使用

    Spring Boot XSS 攻击过滤插件使用

    这篇文章主要介绍了Spring Boot XSS 攻击过滤插件使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Java中线程安全有哪些实现思路

    Java中线程安全有哪些实现思路

    在 Java 多线程编程中,线程安全是一个非常重要的概念,本文主要介绍了Java中线程安全有哪些实现思路,非常具有实用价值,需要的朋友可以参考下
    2023-05-05
  • java 出现问题javax.servlet.http.HttpServlet was not found解决方法

    java 出现问题javax.servlet.http.HttpServlet was not found解决方法

    这篇文章主要介绍了java 出现问题javax.servlet.http.HttpServlet was not found解决方法的相关资料,需要的朋友可以参考下
    2016-11-11
  • Spring @ComponentScan注解使用案例详细讲解

    Spring @ComponentScan注解使用案例详细讲解

    @ComponentScan注解的作用可以简述为:将项目中所有被@Component注解直接或者间接标记的类---->组装成BeanDefinition---->然后以key=beanName, value=BeanDefinition的形式存储,为后续生成bean对象做准备
    2023-03-03
  • Java控制台输入scanner的方法及代码详解

    Java控制台输入scanner的方法及代码详解

    在本篇内容里小编给大家分享的是一篇关于Java控制台输入scanner的方法及实例代码,有需要的朋友们可以参考下。
    2022-11-11

最新评论