Java接口粗解

接口

接口现实概念

生活中的实体接口接触最多的莫过于电子设备的的USB接口,手机设备的type-C接口。这些接口的在连接不同设备时会添加不同的功能,连接U盘获得额外存储空间功能扩展,连接音响获得音乐播放功能扩展,连接屏幕设备获得图像显示功能扩展。

如果我们在设计设备之初,为可能的所有外接设备都单独设计一种接口,设备就会臃肿不堪。所以,考虑于此,设置一种公共接口,拥有提供电源和数据读写的基本功能,而后再在软件层面对各种设备实现特异性配置。

Java接口体现

接口(interface),在java中是一种抽象类型,可以理解为抽象方法的集合,接口是对类更高抽象。

可以这样理解,不同的类之间,具有相同的行为方法,因此,把该方法抽象出去,降低代码之间的耦合性;

类的区别:

1,接口只能被实现(继承)为类(只能被声明为变量类型,但不能new它,因此也是作为多态性的一种体现

2,接口中的属性是全局的静态常量,即public static final。

3,接口中的方法必须是抽象方法(会隐式包含public abstract)。

4,接口可以继承接口(使用关键字extends

4,接口支持多继承。

接口的特性:

1,抽象类中的方法可以有方法体,但是接口中不能;

2,成员变量可以是各种类型的,但只能是public static void

3,接口中不能含有静态代码块和静态方法,但抽象类中可以有。

4,接口可看做是一种类,因此在程序中调用接口中的方法可以通过编译,而后在使用的时候可以再传入一个 “实现了接口并对抽象方法的做了实现的类的对象,实现具体的功能

注:JDK1.8后, 接口中可以有静态方法和方法体了

​ JDK1.8后,接口中允许包含具体实现的方法(称之为默认方法)

​ JDK1.9后,接口可以定义private方法,使得复用代码不会把方法暴露出去

接口实现示例
//登录页面中,不同登录方式,抽象为简单的Login()方法作为接口,对于不同的登录方式,只需要实现该接口中的Login()为一个登录方式类即可,这样在后续的发展中可以很容易的添加新的登录方法。
public interface LoginInterface{
    void Login();
}

public class UserIndex{
    public void userLogin(LoginInterface lo){
        lo.Login();
    }
    //考虑另外一种写法,将接口变量定义在函数之外,这样的好处就是,如果多次调用登录方法,不需要重新写入对象
    public LoginInterface lo;
    public void configUserLogin(LoginInterface lo){	//一次定义好该类的登录方式
        this.lo=lo;									//再要用就不用总传实现类了
    }
    public void userLogin(){
        lo.Login();
    }
    
}

public class EmailLogin implements LoginInterface{
    @Override
    public void Login(){
        System.out.println("邮箱登录成功")}
}

public class PhoneNumLogin implements LoginInterface{
    @Override
    public void Login(){
        System.out.println("手机登录成功");
    }
}
public class Test{
    public static void main(String[] args){
        UserIndex ui=new UserIndex();
        //邮箱登录方法
        ui.userLogin(new EmailLogin);
        //由于接口中只有一个抽象方,因此可以使用lambda表达式
        ui.userLogin(()->System.out.println("邮箱登录成功"));
        //手机登录
        ui.userLogin(new PhoneNumLogin();
        //lambda
        ui.userLogin(()->System.out.println("手机登录成功"));
    }
}
另:

标记接口:就是啥都没有,充当一个标记的作用

建立一个公共的父接口,用于一个给JVM一个指示作用

向一个类添加数据类型标记

public interface EventListener{}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值