学习一下编程模式就知道 ,就了解接口了。  看看集合类的api也行 。接口 提高代码的重用率。
减低耦合性。

解决方案 »

  1.   

    比如在项目中需要N个接口,他们都要实现一些常用的功能,这样你就可以只写一个接口,然后让你的其他接口都这个接口。通常IBaseDao就是这样的。定义一个泛型接口,然后让其他接口去继承它并定义各自的泛型类,这样就方便很多。
      

  2.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
      

  3.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
    重写是根据需求来的,也可以不重写啊谁说一定要重写了?我在IbaseDao定义了所有常用接口。。我继承之后接口就可以用。。一般是我的接口继承IBaseDao,我的类实现IbasezDao并继承IBaseDao的实现类。。这一点在继承泛型对象时特别方便方法调用。可以说我的dao的接口和实现类不需要写任何代码就可以使用父类接口的方法了。
      

  4.   

    理论不懂,英文单词就有2个。
    extends    
    implements
      

  5.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
    重写是根据需求来的,也可以不重写啊谁说一定要重写了?我在IbaseDao定义了所有常用接口。。我继承之后接口就可以用。。一般是我的接口继承IBaseDao,我的类实现IbasezDao并继承IBaseDao的实现类。。这一点在继承泛型对象时特别方便方法调用。可以说我的dao的接口和实现类不需要写任何代码就可以使用父类接口的方法了。我知道不用一定要重写,但你肯定会重写父接口一个方法吧!那么这时候是不是违法了继承的原则性。继承就是为了不用再去重写父接口的东西,才起着意义。
      

  6.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
    重写是根据需求来的,也可以不重写啊谁说一定要重写了?我在IbaseDao定义了所有常用接口。。我继承之后接口就可以用。。一般是我的接口继承IBaseDao,我的类实现IbasezDao并继承IBaseDao的实现类。。这一点在继承泛型对象时特别方便方法调用。可以说我的dao的接口和实现类不需要写任何代码就可以使用父类接口的方法了。我知道不用一定要重写,但你肯定会重写父接口一个方法吧!那么这时候是不是违法了继承的原则性。继承就是为了不用再去重写父接口的东西,才起着意义。
    为什么要重写父接口的方法,我继承之后什么都不用写,直接用。不知道你哪里不理解,给你看个栗子:public interface IBaseDao<T>
    {
    public T add(T t); public void update(T t); public void delete(int id);        ……  等等省略
        
    public interface YdAccountDao extends IBaseDao<YdAccount>{
            //这里什么都不写.如果有需求可以继续写自己的业务方法
    }
      

  7.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
    重写是根据需求来的,也可以不重写啊谁说一定要重写了?我在IbaseDao定义了所有常用接口。。我继承之后接口就可以用。。一般是我的接口继承IBaseDao,我的类实现IbasezDao并继承IBaseDao的实现类。。这一点在继承泛型对象时特别方便方法调用。可以说我的dao的接口和实现类不需要写任何代码就可以使用父类接口的方法了。我知道不用一定要重写,但你肯定会重写父接口一个方法吧!那么这时候是不是违法了继承的原则性。继承就是为了不用再去重写父接口的东西,才起着意义。
    为什么要重写父接口的方法,我继承之后什么都不用写,直接用。不知道你哪里不理解,给你看个栗子:public interface IBaseDao<T>
    {
    public T add(T t); public void update(T t); public void delete(int id);        ……  等等省略
        
    public interface YdAccountDao extends IBaseDao<YdAccount>{
            //这里什么都不写.如果有需求可以继续写自己的业务方法
    }
    理解了!谢谢!!!!!!请看我在13楼提的问题
      

  8.   

    为什么java里面的list接口里面的抽象方法还要重写Collection里面的方法,我继承了不是就代表拥有Collection里面的方法了吗
      

  9.   

    所以说重写本身就是根据需求来的。List和Set都是继承于Collection,他们也有各自的区别,所以设计的时候才需要重写,以实现各自的功能。我给你的栗子就是不需要重写而已,因为我封装的本身就是那些常用的方法,我继承过来就是要直接用而已。
      

  10.   

    1.楼主你的问题,   子接口还是要重写了父接口的方法!!!!! ..首先接口本身是不能有实现代码的,所以这里的重写不成立...你可以不声明
    User 接口的id方法的2.接口的意义更多的在于统一性,层次性。方便调用,对于下层,即调用层来说,具有很大的便利性,比如JDBC规范,不同的数据库厂商实现了JDBC,那么无论数据库是什么,对于使用者来说是没有区别的。接口体现的是面对象编程的三大特征中的多态,针对一个接口,可以有多种形势的实现。3.继承的意义在于代码的重用,以及类关系的层次化。
      

  11.   

    我对Java的接口也不理解,没有代码的实现,起不到什么重用作用,还多余写了代码。只是如果一个类要实现接口,就要强制实现它的方法。c++就没有接口
      

  12.   

    在你举的例子中,接口User中可以不用声明id()方法
      

  13.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
    重写是根据需求来的,也可以不重写啊谁说一定要重写了?我在IbaseDao定义了所有常用接口。。我继承之后接口就可以用。。一般是我的接口继承IBaseDao,我的类实现IbasezDao并继承IBaseDao的实现类。。这一点在继承泛型对象时特别方便方法调用。可以说我的dao的接口和实现类不需要写任何代码就可以使用父类接口的方法了。我知道不用一定要重写,但你肯定会重写父接口一个方法吧!那么这时候是不是违法了继承的原则性。继承就是为了不用再去重写父接口的东西,才起着意义。
    为什么要重写父接口的方法,我继承之后什么都不用写,直接用。不知道你哪里不理解,给你看个栗子:public interface IBaseDao<T>
    {
    public T add(T t); public void update(T t); public void delete(int id);        ……  等等省略
        
    public interface YdAccountDao extends IBaseDao<YdAccount>{
            //这里什么都不写.如果有需求可以继续写自己的业务方法
    }
    还是不理解这段代码有什么意义。接口就是功能定义的集合,可以用来定义规范。这段代码既没有增加新功能,也没有描述新规范,有什么存在的必要呢?
      

  14.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
    重写是根据需求来的,也可以不重写啊谁说一定要重写了?我在IbaseDao定义了所有常用接口。。我继承之后接口就可以用。。一般是我的接口继承IBaseDao,我的类实现IbasezDao并继承IBaseDao的实现类。。这一点在继承泛型对象时特别方便方法调用。可以说我的dao的接口和实现类不需要写任何代码就可以使用父类接口的方法了。我知道不用一定要重写,但你肯定会重写父接口一个方法吧!那么这时候是不是违法了继承的原则性。继承就是为了不用再去重写父接口的东西,才起着意义。
    为什么要重写父接口的方法,我继承之后什么都不用写,直接用。不知道你哪里不理解,给你看个栗子:public interface IBaseDao<T>
    {
    public T add(T t); public void update(T t); public void delete(int id);        ……  等等省略
        
    public interface YdAccountDao extends IBaseDao<YdAccount>{
            //这里什么都不写.如果有需求可以继续写自己的业务方法
    }
    还是不理解这段代码有什么意义。接口就是功能定义的集合,可以用来定义规范。这段代码既没有增加新功能,也没有描述新规范,有什么存在的必要呢?
    public T add(T t);
    public void update(T t);
    public void delete(int id);
    这些不是功能吗?你还要什么功能?
      

  15.   

    帖子讨论很热烈啊,楼上诸位说的有道理,基本就那么回事。不过另外一个重要的作用是方便编写Mock类,做单元测试非常方便。比如maven直接默认支持一个test的源代码文件夹,单元测试越来越重要了。
      

  16.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
    重写是根据需求来的,也可以不重写啊谁说一定要重写了?我在IbaseDao定义了所有常用接口。。我继承之后接口就可以用。。一般是我的接口继承IBaseDao,我的类实现IbasezDao并继承IBaseDao的实现类。。这一点在继承泛型对象时特别方便方法调用。可以说我的dao的接口和实现类不需要写任何代码就可以使用父类接口的方法了。我知道不用一定要重写,但你肯定会重写父接口一个方法吧!那么这时候是不是违法了继承的原则性。继承就是为了不用再去重写父接口的东西,才起着意义。
    为什么要重写父接口的方法,我继承之后什么都不用写,直接用。不知道你哪里不理解,给你看个栗子:public interface IBaseDao<T>
    {
    public T add(T t); public void update(T t); public void delete(int id);        ……  等等省略
        
    public interface YdAccountDao extends IBaseDao<YdAccount>{
            //这里什么都不写.如果有需求可以继续写自己的业务方法
    }
    还是不理解这段代码有什么意义。接口就是功能定义的集合,可以用来定义规范。这段代码既没有增加新功能,也没有描述新规范,有什么存在的必要呢?
    public T add(T t);
    public void update(T t);
    public void delete(int id);
    这些不是功能吗?你还要什么功能?抱歉没表达清楚,我指的是YdAccountDao。
      

  17.   

    interface People{
            void id();  } interface User extends People{
                 void    id();
                 void    name();
     }
    你的例子是接口继承了接口,他并没有重用,只是说明人有一个id号,而用户是一个人,用户也有id号,并且用户要多一个用户名。
    如果把你的例子里面的两个interface改为class的话,意思就可以这么写。
    abstract class People{
            int id(){
                  return 1; 
            }  } class User extends People{
                 void    name();
     }
    这个时候意思虽然没变,但是当你用User customer=new User();的时候,如果 int i=customer.id(); 就可以得到1,你没有在User类里面写过int id()方法,但是你还是得到id值,这不是一种重用吗?如果People类是别人写的,而User类是你写的,你不是很省力的得到了别人写的People的全部功能,而你只是写了User类,给它添加了一个返回名字的方法,这样你不用改变别人写的People类。
    那么再回到刚才的Interfac继承的问题,为了要Interface继承呢,如果另外一个类里面有一个方法 int GetId(People p);而且它在很多地方地方都用到People这个接口,如果项目拿到你手里收,客户说User是一个带用户名的People类,那么你可以去改People接口,增加一个Name方法,但是这样做不太好,你可以继承People这个接口,写这个你给我看的User接口,然后去写一个具体的User类实现User接口,这样所有int GetId(People p)的地方都需要改动,因为以前写的类只到People只有一个id方法,但是其实你的People功能已经不止这么点了,但是你改了以后,以前的代码不用动,而只需要在新的代码里增加String getName(User user);这样的办法。
    老外比较喜欢这么写,这样写看起来很啰嗦,开始写程序的时候不需要追求这些,但是这条路是必经的,早晚写着写着就追求这样的境界了,慢慢来。
      

  18.   


    继承IBaseDao接口的接口不是还要重写IBaseDao接口中的的抽象方法吗?对吧!继承后还要重写父接口的方法,岂不是起不到代码重用的作用。应该这样做只是为了层次分明吧!!
    重写是根据需求来的,也可以不重写啊谁说一定要重写了?我在IbaseDao定义了所有常用接口。。我继承之后接口就可以用。。一般是我的接口继承IBaseDao,我的类实现IbasezDao并继承IBaseDao的实现类。。这一点在继承泛型对象时特别方便方法调用。可以说我的dao的接口和实现类不需要写任何代码就可以使用父类接口的方法了。我知道不用一定要重写,但你肯定会重写父接口一个方法吧!那么这时候是不是违法了继承的原则性。继承就是为了不用再去重写父接口的东西,才起着意义。
    为什么要重写父接口的方法,我继承之后什么都不用写,直接用。不知道你哪里不理解,给你看个栗子:public interface IBaseDao<T>
    {
    public T add(T t); public void update(T t); public void delete(int id);        ……  等等省略
        
    public interface YdAccountDao extends IBaseDao<YdAccount>{
            //这里什么都不写.如果有需求可以继续写自己的业务方法
    }
    还是不理解这段代码有什么意义。接口就是功能定义的集合,可以用来定义规范。这段代码既没有增加新功能,也没有描述新规范,有什么存在的必要呢?
    public T add(T t);
    public void update(T t);
    public void delete(int id);
    这些不是功能吗?你还要什么功能?抱歉没表达清楚,我指的是YdAccountDao。
    我在YdAccountDao的实现类中就可以通过IBaseDao定义的方法对我的泛型类进行操作了,我在 IBaseDao的实现类中封装了一些常用操作的实现。