抽象类和接口

来源:互联网 发布:中国语言地图集 淘宝 编辑:程序博客网 时间:2024/05/18 00:25

       在Java中,抽象类和接口在使用时有时很相似,有时又有区别,那么,我们整理一下抽象类和接口的特点以及不同之处

      抽象类:1. 抽象类不能被实例化

                     2. 抽象类中可以定义普通成员变量和普通成员方法

                     3. 抽象类的关键字是abstract

                     4. 抽象类中的抽象方法只能有声明,不能有实现体

                     5. 子类在继承了抽象类之后,必须重写这个抽象类中的抽象方法

                     6. 抽象类中可以有0个或多个抽象方法

                     7. 抽象方法不能出现在普通类中,只能声明在抽象类中

                     8. 抽象类的引用可以装载子类

       接口:   1. 接口不能被实例化

                     2. 接口代表的是功能

                     3. 接口中只能定义静态常量属性以及只有声明,没有实现的方法,属性会被默认加上static final关键字,接口中的方法为隐式的抽象方法

                     4. 接口可以继承接口

                     5. 接口的关键字是Interface,用implements实现接口

                     6. 一个类如果实现了接口,那么该类应重写接口中的所有抽象方法

                     7. 接口实际上是一种“纯虚抽象类”

                     8. 接口用来达成多继承的效果

                     9. 接口可以多继承,也可以被继承

                    10.接口的引用可以装载子类

                    11. 接口可以实现多态

         面向接口编程实际上就是接口指向实现类的一种应用。

         接口的应用(代码):

               示例描述:假设我们现在需要回家,但是我们并不想要关注某一个车(对象),也就是说我们只要能够回家,达到回家的功能(接口)就可以了,而没有必要执着于某一辆车,所以为达到这种功能,我们可以将这个功能抽象成一个接口,而将一个个的车辆(对象)抽象成为实现该接口的类,此时,当我们要回家时,我们只需要利用接口的引用来装载子类,调用接口中的方法,便可以实现回家的功能了,这样,我们就回到家了。

         public interface  Tool

        {

                public void takeMeHome();           //表示某项功能,并不关注坐哪辆车回家

        }

       public class Taxi implements Tool             //该类表示对象,具体乘哪辆车回家,实现功能

      {

               public void takeMeHome()

               {

                       System.out.println("Taxi go home");           //重写接口中的功能函数

               }

      }

      

      public class Bus implements Tool

      {

               public void takeMeHome()

               {

                       System.out.println("Bus go home");

               }

      }

     public class student                                 //动作的发出者,谁回家

     {

              public void  goHome(Tool tool)      //回家的这个动作,这里实际传入具体哪辆车的一个父类引用,用父类引用去调用功能

              {

                      tool.takeMeHome();

              }

     }

    public class Run

   {

             public static void main(String[] args)

             {

                    Student stu=new Student();

                    Tool tool=new Taxi();

                     stu.goHome(tool);                   //输出结果为Taxi go home

                     Tool  t=new Bus();

                     stu.goHome(tool);                  //输出结果为Bus go home

             }

   }

     在实际项目中,我们会经常使用面向接口编程的方式来编写项目代码,而这种结构的设计其实就是架构师需要做的工作。

          


原创粉丝点击