java复习 ---实验三复习

本文介绍了一种自定义异常类`overdraw`,用于处理银行系统中余额不足的情况,并详细阐述了`bank`类、`customer`类以及`CheckingAccount`子类的实现,包括异常处理逻辑的重写。核心内容涉及异常类设计、银行账户操作及权限控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自建异常类、

public class overdraw extends  Exception{
    String message;
    overdraw(int n)
    {
        message="余额不足,不能取"+n;
    }
    public String getmessage()
    {
        return message;
    }
    public void setmessage(String n)
    {
        message=n;
    }
}

bank类,里面有储户

public class bank {
List<customer> cus =new LinkedList<customer>();
public  void addcustomer(customer obj)
{
    cus.add(obj);
}
public customer  getcus(int n)
{
    return cus.get(n);
}

}

customer类,里面 链表 存账号
注意1.list写法格式
2.返回it的格式
3.getaccount(int n)直接return list.get(n)就完事了

public class customer {
    String name;
    List<acount> accounts=new ArrayList<acount>();//生命一个类型为。。。的列表
    public customer(String name)
    {
        this.name=name;
    }
 public Iterator<acount> getacount()//getAccounts方法返回该储户的帐号的Iterator,以便获得每个帐号对象。
 {
     Iterator<acount> it= accounts.iterator();
     return  it;
 }
 public void addaccount(acount obj)
 {
     accounts.add(obj);
 }
 public acount getacc(int n)
 {
     return accounts.get(n);
 }

}

抽象类accout

public abstract class acount {
    int balance;
acount(int balance)

{
    this.balance=balance;
}
    public int getBalance() {
        return balance;
    }

    public void setBalance(int balance) {
        this.balance = balance;
    }
    public void withdrow(int n)throws overdraw
    {if(balance<n)
    {
        overdraw ex=new overdraw(n);
        throw(ex);
    }
    else {
        this.balance -= n;
    }
    }
    public String toString()
    {
        return "account{余额为:"+balance+"}";
    }
}

大额账号
注意异常写法
super位置
重写 了 抽象类的 抛异常函数,用setmeaaasge设置新的异常提示

public class CheckingAccount extends acount{
    boolean canOverdraft;
    CheckingAccount(int balance,boolean canOverdraft){//super必须写在前边
        super(balance);
        this.canOverdraft=canOverdraft;
    }
    public void withdrow(int n)throws overdraw//重写这个带有异常的方法
    {
        if(canOverdraft==false)
        {
            overdraw ex=new overdraw(n);
            ex.setmessage("不允许透支");//重设置异常输出
            throw ex;
        }
        if(balance<n)
    {
        overdraw ex=new overdraw(n);
        throw(ex);
    }
    else {
        this.balance -= n;
    }
    }
}

testl

public class test {
    public static void main(String[] args) {
        CheckingAccount obj=new CheckingAccount(100,true);
        CheckingAccount obj1=new CheckingAccount(200,true);
     /* try{
          obj.withdrow(350);
      }
      catch (overdraw e)
      {
          System.out.println(e.getmessage());
      }*/
        bank bank1=new bank();

      customer peter =new customer("peter");
      peter.addaccount(obj);//可以把aount的子类直接add;
        peter.addaccount(obj1);
        bank1.addcustomer(peter);
      /*  while(peter.getacount().hasNext())
        {
            System.out.println(peter.getacount().next());
        }
*/
        System.out.println(bank1.getcus(0).getacc(1));
        System.out.println(peter.getacc(1));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值