我看见有的接口中设计的方法是abstract的,为什么要这样设计呢?

解决方案 »

  1.   

    .被声明为adstarct的类被称为抽象类,但是包含抽象方法的类也必须是abstract的。.因为要继承抽象类,也就必须实现抽象类中的每一个方法。.Java中没有多重继承,为了实现多重继承,就引入了接口,接口其实也是一个抽象类,所以其方法加上abstract是为了强调必须被实现的意思。
      

  2.   

    虽然interface没有方法体,但是如果你的interface中有abstract接口,那么就必须定义这个interface为abstract了,其实,它的意义巨大,给个例子给吧:abstract public  interface IA {
        public void run() ;
        abstract public void setParams() ;
    }
    abstract public class CBase implements IA {
       public CBase() {} 
       abstract public String[] getParams() { }
       public void run() {
         String[] s = getParams();
         if (s != null && s.length() > 0) {
            for (int i=0; i<s.length() ; i++ ) {
               System.out.println("s[" + i + "]:" + s[i]));
            }
         }   
       }
    }
    public class CSub entexted CBase {
      public CSub() {}
      protected String[] s ;
      public String[] getParams() {
        return this.s ;
      }
    }
    public class DSubSub extends CSub {
      public DSubSub() {}
      public void setParams() {
         this.s = {"abcd", "efg"} ;
      } 
      public static void main(String[] args) {
         IA dsubsub = new DSubSub() ;
         dsubsub.run() ;
      }
    }输出结果:
      s[0]:abcd
      s[1]:efg从设计意义上来说,我举个例子:
        CBase 类是所有电器产品总类,其中的run()函数负责输出某种电器产品的库存总价值。
        CSub 类是所有小家电产品类,其中getParams()函数负责得到某种小家电产品库存总价值。
        DSubSub类是小家电中的电吹风机类,其中的setParams()函数负责电吹风机的特有计算库存产品价值的方式。
        当你的每一类电器产品都有自己不同的价值计算方式时,使用这种构架就可以很好的分类计算。
        而这些业务逻辑实现类在三层构架中是不提供给客户端调用的,提供给客户端的仅仅是Interface,那么这种设计就是相当必要的。
      

  3.   

    在interface中的方法全部都是abstract方法,所以interface中加不加abstract的意思是一样的。
      

  4.   

    支持楼上的,写abstract 和不写一样的效果
      

  5.   

    在interface中的方法全部都是abstract方法,所以interface中加不加abstract的意思是一样的,而且不能有方法体
      

  6.   

    应该是没有区别的!
    不能感觉到 cancer2000(夜之哀伤) 的那段代码中加上abstract有什么好处~~~,愿闻其详
      

  7.   

    c++程序员写java程序的遗留习惯吧?
    c++没interface只有abstract class,方法必须加abstract修饰。