基本概念:
接口是java编程语言的一种抽象了类,默认被public,abstract关键字修饰。接口由抽象方法和全局变量组成。接口没有构造函数,但是可以多继承。
使用:
由于接口存在抽象方法,所以不能直接实例化一个接口对象,所以:
接口必须要有子类,但是一个子类可以实现多个接口。接口的子类必须全部重写接口的方法。接口的独享可以通过子类对象的向上转型进行实例化。
public class Main {
public static void main(String[] args) {
//通过父类引用指向子类对象来实例化Pay接口对象
AliPay aliPay=new AliPay();
Pay pay=aliPay;
pay.Pay();
}
}
用处:
要进行支付,定义一个支付接口Pay,定义三种支付方式WechatPay,AliPay,CachPay,这三个类都实现这个支付接口。要支付时,Topay可以通过实例化这三种支付方式实现选择支付方式支付。程序://main:
package com.company;
public class Main {
public static void main(String[] args) {
/* //通过父类引用指向子类对象来实例化Pay接口对象
AliPay aliPay=new AliPay();
Pay pay=aliPay;
pay.Pay();*/
Topay topay=new Topay();
//选择支付宝支付,实例化一个AliPay对象作为参数
topay.Payment(new AliPay());
//选择微信支付
topay.Payment(new WechatPay());
//选择现金支付
topay.Payment(new CashPay());
}
}
package com.company;
public class Topay {
public void Payment(Pay pay){//等下传过来的参数是Alipay类的对象alipay,所以pay.pay()就变成了alipay.Pay()
//使用支付接口,但是支付方式可以自己选择
pay.Pay();
}
}
Pay接口:
package com.company;
public interface Pay {
//默认是被Public,final,static修饰,所以声明变量时可以不写,是静态常量
public static final int a=12;
//默认被public,abstract修饰
public abstract void Pay();
}
package com.company;
public class AliPay implements Pay {
//子类必须重写父类Pay接口的所有方法
@Override
public void Pay() {
System.out.println('使用支付宝支付');
}
}
package com.company;
public class WechatPay implements Pay {
//子类必须重写父类Pay接口的所有方法
@Override
public void Pay() {
System.out.println('使用微信支付');
}
}
package com.company;
public class CashPay implements Pay {
//子类必须重写父类Pay接口的所有方法
@Override
public void Pay() {
System.out.println('使用现金支付');
}
}
调试过程:当支付时,通过实例化支付方式对象选择支付方式,选择了AliPay,则将alipay对象作为参数传到topay.Payment方法。toapay.Payment方法里调用了支付接口Pay的Pay()方法。此时由于alipay作为参数传进来,所以就是通过向上转型的方式实例化的一个接口:Alipayalipay=newAlipay();Paypay=alipay;此时,调用支付接口Pay.Pay()其实就是调用alipay.Pay()。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点