1.   接口

接口是抽象方法和常量值的定义的集合,是一种特殊的抽象类

接口内所有的方法都是抽象方法,且都是public的!

接口 天生是用来被继承的,而不是用来被实例化的

1)    定义接口

<modifier> interface <name>{

}

2)    实现接口

注意,因为接口内方法都是public的,所以在具体实现时,子类中实现的时候,也必须都是public的!(子类访问权限要大于等于父类的权限)

【注意:子类在实现的时候,一定要加public,否则会报错】

3)    默认方法

在JAVA8中,接口增加了默认方法:为了解决新增修改与现有实现类冲突的问题

4)    抽象类与接口对比

java接口中所有的方法都是抽象的 接口中所有方法都是public_子类

 

 

代码块:

接口:

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("密码不对");
        }
    }
}