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


    链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

    实施接口中,我们利用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快速教程”系列文章

    如果一件事情你觉得难的完不成,你可以把它分为若干步,并不断寻找合适的方法。最后你发现你会是个超人。不要给自己找麻烦,但遇到麻烦绝不怕,更不要退缩。 电工查找电路不通点的最快方法是:分段诊断排除,快速定位。你有什么启示吗? 求知若饥,虚心若愚。 当你对一个事情掌控不足的时候,你需要做的就是“梳理”,并制定相应的规章制度,并使资源各司其职。
  • 相关阅读:
    图的深度遍历
    数据结构实验图论一:基于邻接矩阵的广度优先搜索遍历

    满汉全席
    2-sat(模板)
    2-sat
    花匠
    维护序列NOI2005
    序列终结者
    杨辉三角
  • 原文地址:https://www.cnblogs.com/wvqusrtg/p/4991161.html
Copyright © 2020-2023  润新知