Java基础之接口到底是啥

接口的定义,意味实现类具有那些行为

比如java 的数据结构,举个例子如Queue(队列),jdk源码就是接口

show源码

public interface Queue<T> {

    /**
     * 增加一个元索
     */
    public void add();
    
    /**
     * 移除并返回队列头部的元素
     * @return
     */
    public T remove();

    /**
     * 返回队列头部的元素
     * @return
     */
    public T element();
    
    /**
     * 添加一个元素并返回true
     * @return
     */
    public boolean offer();
    .....
    }
    

可以看出Queue中定义了很多方法,需要子类去实现,子类实现后,这些方法都要实现,同时为子类定义具有那些行为,如队列必须具有添加元素,删除元素行为等等

接口的出现,同时也是为了解耦,如面向接口编程,降低程序耦合度。

面向接口其实在android中体现的很抽象,而对于依赖注入更是在近一年才兴起的,so,为了更好的理解,我举一个很java的例子~

如数据库存储,你跟纠结是应该用哪个数据库框架,但是领导也不确定,这个时候体现你的水平的时候了,想想怎么写能够在后面更换框架的时候,修改代码量最好。

我来给你一个思路:

1.接口走起
public interface IDAO{
    void save(User user) throws UserNameExistException;
}
2.jdbc实现
public class JDBCDAO implements IDAO{
    public void save(User user) throws UserNameExistException{
        .....
        String sql = "insert into t_user values(?,?,?,?)";
        ....
        PreparedStatement pstm = conn.prepareStatement(sql);
        pstm.setString(1,user.getName());
        ....
        pstm.executeUpdate();
        ......
    }
}
3.Hibernate的实现是
public class HibernateDAO implements IDAO{
    public void save(User user) throws UserNameExistException{
        ......
        session.save(user);
        session.getTransaction().commit();
        ....
    }
}
4.使用
 public void register(String userName,String password,int age,....等等参数){
        //假设现在用的是JDBC的实现
        IDAO dao = new JDBCDAO();//当你需要替换实现的时候,只要把这个JDBCDAO换成HibernateDAO就可以了,其它代码不需要改。
        User user = new User();
        user.setName(userName);
        ......
        dao.save(user);
    }

看到了么,如果换了框架,代码的改动并没有改动多少~

接口和抽象类区别

  • 抽象-单继承->多继承->接口
  • 需要有具体实现方法,声明变量,构造函数,同时也能不必全部实现你可以选择抽象类,接口所有方法都是抽象的,必须全部实现,同时可以创建静态产量
  • 接口都是public,而抽象类确没有这个限制
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值