} } }

    空话少说 解析java抽象类与接口的差别

    添加时间:2013-7-2 点击量:

    抽象类(abstract):


       人们熟悉事物的时辰,会把具有雷同特点和行动的事物归为一个抽象类。用abstract润饰,abstract可以润饰办法也可以润饰类,分别叫做抽象办法和抽象类。


    特点:


    1. 有抽象办法的类必然是抽象类,然则抽象类中不必然都是抽象办法,也可以有具体办法。


    2. 抽象类的第一个非抽象子类必必要实现其父类所有的抽象办法,此中也包含了父类持续的抽象办法。


    接口:


      接口是一种特别的抽象类。implements实现接口中的办法。


    接口编程的原则:


    1. 能用接口就用接口


    2. 用若干个小接口庖代一个大接口


    差别:


    语法差别:


    1.抽象类有机关办法,接口中不克不及有


    2. 抽象类有通俗成员变量,接口中没有


    3. 抽象类可以有非抽象办法,接口中不克不及有


    4. 抽象类可以用public、protected,接口中之能是public(默认为public)


    5. 抽象类包含静态办法,接口中没有


    6. 接口中的变量只能是public static final,抽象类中可所以随便率性类型润饰


    7. 一个类可以实现多个接口,然则只能持续一个抽象类。


    应用上的差别:


    接口更多的是在体系设计上阐扬感化,首要用于定义模块之间的通信契约。


    抽象类在代码实现方面阐扬感化,可以实现代码重写。


    例子:假如项目所有的Servlet类都要用雷同的体式格式进行权限断定、记录接见日记和异常处理惩罚,那么就可以定义一个抽象基类,在抽象堆集的service办法中完成权限断定、记录接见日记、异常处理惩罚的代码,各个子类完成各自营业逻辑



    public abstract class BaseServlet {
    

      public final void service () throws IOExcetion,ServletException{
      记录接见日记
        权限断定
      if(具有权限){
      try{
      doService();
    }catch(Excetpion e){
    记录异常信息
    }
    } 
    }
    protected abstract void doService() throws IOExcetion,ServletException;//重视接见权限制义成protected,显得既专业,又严谨,因为他是专门给子类用的
    }
    public class MyServlet1 extends BaseServlet{
    protected void doService(){
    本Servlet只处理惩罚具体营业逻辑代码
    }
    }


      


    【迎接吐槽!!!】

    彼此相爱,却不要让爱成了束缚:不如让它成为涌动的大海,两岸乃是你们的灵魂。互斟满杯,却不要同饮一杯。相赠面包,却不要共食一个。一起歌舞欢喜,却依然各自独立,相互交心,却不是让对方收藏。因为唯有生命之手,方能收容你们的心。站在一起却不要过于靠近。—— 纪伯伦《先知》
    分享到: