java接口

一.概述

接口是一系列方法的声明,是一些方法特征的集合,是一种规范,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的功能。

二.实例

在生活中,不同的插座厂家生产不同的插座,有的里面用铜来导电,有的用银来导电,还有的用黄金导电。但是插座都遵循特定的规范,使得不同品牌插座都可以互相替换,不用因为电视机插座坏了,不仅要换插座还要换个匹配新插座的电视机。这个规范就类似接口。

如使用不同的数据库,切换数据库就行,不用更改其他东西。
统一使用规范,显示当前数据库名称,登录数据库,进行crud操作

public interface Control_Db {

    //接口中没有constucter
    //public Control_Db() { }

    //J8新特性
    //    int i = 1;
    //    static void out(){
    //        System.out.println("加载中......");
    //    }
    //JDK8新增接口中抽象方法的默认实现 使用default关键字

    void sout_Name();

    boolean login();

    void crud();

}

MySQL遵循这个规范

public class MySQL implements Control_Db {

    //interface也需要实现所有方法
    @Override
    public void sout_Name() {
        System.out.println("使用Mysql");
    }

    @Override
    public boolean login() {
    
        //任意实现过程,由mysql自己决定
        System.out.println("name-password-Mysql登录成功");
        return true;
    }

    @Override
    public void crud() {
    
        //任意实现过程,由mysql自己决定
        System.out.println("Mysql crud");
    }
}

Oracle也遵循这个规范

public class Oracle implements Control_Db {

    @Override
    public void sout_Name() {

        System.out.println("使用Oracle");
    }

    @Override
    public boolean login() {

        System.out.println("name-password-Oracle登录成功");
        return true;
    }

    @Override
    public void crud() {

        System.out.println("Oracle crud");
    }
}

模拟用户

public class User {

    //用户使用数据库,所以持有一个数据库对象
    private Control_Db control_db;

    public User(Control_Db control_db) {
        this.control_db = control_db;
    }

    public Control_Db getControl_db() {
        return control_db;
    }

    public void setControl_db(Control_Db control_db) {
        this.control_db = control_db;
    }

    public void use_Db() {

        //J8可以使用接口的静态方法
        //Control_Db.out();

        //使用数据库,都是一种规范这几个功能功能一样,不用管各个数据库的具体实现
        control_db.sout_Name();
        control_db.login();
        control_db.crud();
    }
}
public class Test {

    public static void main(String[] args) {
        Control_Db mySQL = new MySQL();
        //使用mysql数据库
        User user = new User(mySQL);
        user.use_Db();

        Control_Db oracle = new Oracle();
        //更换oracle
        user.setControl_db(oracle);
        user.use_Db();
    }
}

在这里插入图片描述

三.小结

使用接口的作用:
统一标准,是大家都知道这个是做什么的,但是不用知道具体怎么做
正如DAO层中的接口,没有规范,就会十分混乱
其他问题:
1.接口没有构造器,接口不能实例化
2.实现接口需要实现他的所有方法
3.接口中的方法没有方法体,接口中的所有方法都默认是由public abstract修饰的
4.接口中的所有成员变量默认由public static final修饰
5.接口也可以继承另一个接口,使用extends

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值