第三篇 (面向对象)③: 关于Java抽象类和接口概念和实现

来源:互联网 发布:thug life软件 编辑:程序博客网 时间:2024/06/06 00:38

       翻看Java的API文档有很多接口,也有很多类前面用abstract修饰,这些是什么意思呢?

       接口我们从现实可以理解成连接2个不同的事物或者设备,例如插排给你提供很多接口,电脑后面的网线插口,USB鼠标插口等等.充电器插入插排可以充电,网线插入网线插口就可以上网,鼠标插入USB插口就可以移动箭头,谁去调用接口谁就实现接口里面的功能.这就是接口概念。那么Java中的接口是什么意思呢,顾名思义在Java中我们也把很多方法放在接口里面,我们不去实现它,谁继承了这个接口谁就去实现这个接口里面的功能.

       例1-1:  (定义接口使用关键字interface)

       interface eat{ void show(); }          //每种生物都具有吃这个功能我把它定义成接口

        class cat implements eat {            //继承接口使用关键字imlements,猫这个类继承了eat接口并要实现接口中的所                                                                  有方法

                        void eat(){            

                     System.ou.peintln("小猫要吃鱼!");    

                                }

                                   }

可能有人会疑惑上面例子我们为什么要使用接口呢,直接在cat类中直接实现show方法,接口eat不就不用定义了么,不错这种方式是可以实现这个功能,但是面向对象思想不提倡这种做法,这种方式是面向过程思想,要知道Java有非常多的类,这么多类又要实现非常多的方法,如果我们把所有实现方法都直接放在类中无疑逻辑上显得很混乱,不利于理解和查阅文档。Java把很多类相似的共性抽取出来,把这个类共性方法放在一个接口中,让这些类继承这个接口并实现接口中所有方法,接口命名见其名辩其意。这样我们就可以直接查阅这个接口中都有哪些方法,哪些类分别实现了这个接口的方法.

      

       下面说抽象类(abstract)抽象类顾名思义就是抽象的,比我们想到火车,汽车,自行车脑海中都有个清晰的画面,但是如果不去实体化直接想车这个东西,我们都不知道它到底是什么车。所以我们把具有抽象概念的类定义成抽象类,抽象类的类名前面用abstract修饰,有抽象类当然也有抽象方法,抽象方法跟抽象类相同方法名前面用

abstract修饰,抽象方法只能有方法名,不能有具体实现,实现抽象方法交给继承这个抽象类的子类去实现。

      例1-2:  abstract class car{          //抽象类

               abstract void show();        //抽象方法

                                 }

               class train extends car{     //继承类使用关键字extends,火车类继承抽象类车必须实现类车中                                                                            所有的抽象类

                       void show(){

                       System.out.println("我是火车")    

                                  }

                                      }

                    

                class bicycle extends car{                                                              

                       void show(){

                       System.out.println("我是自行车")    

                                  }

                                         }

      我们把车类这个模糊的概念定义成抽象类,谁继承车这个类谁就去实现车类中的抽象方法.看到这会有人问了,抽象类跟接口好像哦,都是继承去实现里面方法,对的抽象类跟接口是有一定相似度的,但是还是有区别的,首先

①类只能单继承,一个类只可以继承一个类,这样就具有很大的局限性,接口则没有这么多规定,接口可以多继承,多实现。

②抽象类中可以有抽象方法也可以有非抽象方法,但是只要这个类中至少存在一个抽象方法,我们就要把这个类定义成抽象类,接口中全部都是没有实现的方法,只有方法体没有内容。谁继承它谁去实现。



0 0
原创粉丝点击