1. 接口
接口是抽象方法和常量值的定义的集合,是一种特殊的抽象类
接口内所有的方法都是抽象方法,且都是public的!
接口 天生是用来被继承的,而不是用来被实例化的
1) 定义接口
<modifier> interface <name>{
}
2) 实现接口
注意,因为接口内方法都是public的,所以在具体实现时,子类中实现的时候,也必须都是public的!(子类访问权限要大于等于父类的权限)
【注意:子类在实现的时候,一定要加public,否则会报错】
3) 默认方法
在JAVA8中,接口增加了默认方法:为了解决新增修改与现有实现类冲突的问题
4) 抽象类与接口对比
代码块:
接口:
public interface IUnionPay {
// public abstract boolean checkPwd(String input);
// 因为接口是一个特殊的抽象类,他里面的所有方法都是抽象方法,所以也可以简写为,系统会默认其是抽象方法
/**
* 校验密码
* @return 是否验证成功
*/
boolean checkPwd1(String input);
/**
* 取钱
* @return 是否取款成功
*/
boolean drawMoney(double money);
/**
* 查询余额
* @return 返回余额
*/
double getBalance();
}
接口实现implements:
// 接口实现-implements
public class CBCATM implements IUnionPay{
public Card card;
public void setCard(Card card){
this.card = card;
}
@Override
public boolean checkPwd1(String input) {
if(input.equals(card.getPwd())){
return true;
}
return false;
}
@Override
public boolean drawMoney(double money) {
if (money<= card.getBal()){
return true;
}
return false;
}
@Override
public double getBalance() {
return card.getBal();
}
}
通用类:
public class Card {
private String bank;
private String pwd;
private Double bal;
public Card(String bank, String pwd, Double bal) {
this.bank = bank;
this.pwd = pwd;
this.bal = bal;
}
public String getBank() {
return bank;
}
public String getPwd() {
return pwd;
}
public Double getBal() {
return bal;
}
public void setBank(String bank) {
this.bank = bank;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public void setBal(Double bal) {
this.bal = bal;
}
}
调用:
import java.util.Scanner;
public class InterfaceTest {
public static void main(String[] args) {
CBCATM atm=new CBCATM();
Card c=new Card("CBC","123456",5000.0);
atm.setCard(c);
System.out.println("请输入密码:");
Scanner sc = new Scanner(System.in);
String input = sc.next();
if (atm.checkPwd1(input)){
System.out.println("请输入提款金额:");
double money = sc.nextDouble();
if (atm.drawMoney(money)){
c.setBal(c.getBal()-money);
System.out.println("取款成功,剩余金额:"+c.getBal());
}else {
System.out.println("余额不足,退出");
}
}else{
System.out.println("密码不对");
}
}
}