(繼承,多型) 銀行的客戶分為兩類,儲蓄賬戶(SavingAccount)和信用賬戶(CreditAccount),區別在於儲蓄賬戶不允許透支,而信用賬戶可以透支,並允許使用者設定自己的透支額度。
(繼承,多型)
銀行的客戶分為兩類,儲蓄賬戶(SavingAccount)和信用賬戶(CreditAccount),區別在於儲蓄賬戶不允許透支,而信用賬戶可以透支,並允許使用者設定自己的透支額度。
注意:CreditAccount需要多一個屬性 ceiling 透支額度
為這兩種使用者編寫相關的類,同時要求編寫Bank類,屬性:
1.當前所有的賬戶物件的集合,存放在陣列中
2.當前賬戶數量
Account類 package com.work1; public class Account { protected long aid;//賬戶編號 protected String aname;//賬戶姓名 protected String username;//使用者名稱 protected String password;//密碼 protected String email;//郵箱 protected double money;//餘額 public long getAid() { return aid; } public void setAid(long aid) { this.aid = aid; } public String getAname() { return aname; } public void setAname(String aname) { this.aname = aname; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } }
Bank類
package com.work1; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Bank { private static List<Account> list=new ArrayList<Account>(); //開戶 public void openAccount(){ Scanner input =new Scanner(System.in); System.out.println("請選擇開戶型別:"); System.out.println("1: 儲蓄賬戶"); System.out.println("2: 信用賬戶"); int choice=input.nextInt(); switch(choice){ case 1: long aid=System.currentTimeMillis();//賬戶編號 System.out.println("請輸入賬戶姓名:"); String name=input.next(); System.out.println("請輸入使用者名稱:"); String username=input.next(); System.out.println("請輸入密碼:"); String password=input.next(); System.out.println("請輸入郵箱:"); String email=input.next(); Account ac=new SavingAccount(aid,name,username,password,email,0.0); list.add(ac); break; case 2: long aid1=System.currentTimeMillis();//賬戶編號 System.out.println("請輸入賬戶姓名:"); String name1=input.next(); System.out.println("請輸入使用者名稱:"); String username1=input.next(); System.out.println("請輸入密碼:"); String password1=input.next(); System.out.println("請輸入郵箱:"); String email1=input.next(); System.out.println("請設定透支額度:"); double ceilling=input.nextDouble(); Account ac1=new CreditAccount(aid1,name1,username1,password1,email1,ceilling,0.0); list.add(ac1); break; } System.out.println("開戶成功"); } //登入 public void login(){ Scanner input =new Scanner(System.in); System.out.println("請輸入使用者名稱"); String username=input.next(); System.out.println("請輸入密碼"); String password=input.next(); Account at=null; for(Account ac:list){ if(ac.getUsername().equals(username)&&ac.getPassword().equals(password)){ at=ac; } } if(at!=null){ System.out.println("登入成功"); System.out.println("請選擇功能:"); System.out.println("1: 存款"); System.out.println("2: 取款"); System.out.println("3: 查詢餘額"); int choice=input.nextInt(); switch(choice){ case 1: System.out.println("歡迎使用存款功能:"); saveMoney(at); break; case 2: System.out.println("歡迎使用取款功能:"); takeMoney(at); break; case 3: loopMoney(at); break; } }else{ System.out.println("賬號或者密碼錯誤"); } } //存款 public void saveMoney(Account at){ Scanner input =new Scanner(System.in); System.out.println("請輸入存款金額"); double money=input.nextDouble(); at.setMoney(money); } //檢視餘額: public void loopMoney(Account at){ System.out.println("賬戶餘額:"+at.getMoney()); } //取款 public void takeMoney(Account at){ Scanner input =new Scanner(System.in); System.out.println("請輸入取款金額"); double money=input.nextDouble(); if(at.getMoney()>=money){ System.out.println("取款成功"); at.setMoney(at.getMoney()-money); } } }
/** * 信用賬戶 * */ public class CreditAccount extends Account { private double ceiling;//透支額度 public CreditAccount(long aid,String aname,String username,String password,String email,double ceiling,double money){ this.aid=aid; this.aname=aname; this.username=username; this.password=password; this.email=email; this.ceiling=ceiling; this.money=money; } public double getCeiling() { return ceiling; } public void setCeiling(double ceiling) { this.ceiling = ceiling; } }
import java.util.Scanner;
/**
* 消費者
*/
public class Customer {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
Bank bk=new Bank();
int choice;
do{
System.out.println("請選擇功能:");
System.out.println("1:開戶:");
System.out.println("2:登入:");
choice=input.nextInt();
switch(choice){
case 1:
bk.openAccount();
break;
case 2:
bk.login();
}
}while(choice!=0);
}
}
/**
* 儲蓄賬戶
*
*/
public class SavingAccount extends Account {
public SavingAccount(long aid,String aname,String username,String password,String email,double money){
this.aid=aid;
this.aname=aname;
this.username=username;
this.password=password;
this.email=email;
this.money=money;
}
}
相關推薦
(繼承,多型) 銀行的客戶分為兩類,儲蓄賬戶(SavingAccount)和信用賬戶(CreditAccount),區別在於儲蓄賬戶不允許透支,而信用賬戶可以透支,並允許使用者設定自己的透支額度。
(繼承,多型) 銀行的客戶分為兩類,儲蓄賬戶(SavingAccount)和信用賬戶(CreditAccount),區別在於儲蓄賬戶不允許透支,而信用賬戶可以透支,並允許使用者設定自己的透支額度。 注意:CreditAccount需要多一個屬性 ceiling 透支額度 為
3.Java面向物件程式設計OOA/OOP/OOD/OOAD()/UML類圖、函數語言程式設計Scala(JVM)---類與物件、封裝繼承多型、構造方法、覆寫/重寫/override
一、緒論 1.面向物件程式設計正規化(C++、Java、Go)------能進行現實生活的抽象。 每個物件都是一個類。類中包含屬性與方法。 OOA:面向物件分析 OOP:面向物件程式設計
-1-2 java 面向物件基本概念 封裝繼承多型 變數 this super static 靜態變數 匿名物件 值傳遞 初始化過程 程式碼塊 final關鍵字 抽象類 介面 區別 多型 包 訪問許可權 內部類 匿名內部類 == 與 equal
java是純粹的面向物件的語言 也就是萬事萬物皆是物件 程式是物件的集合,他們通過傳送訊息來相互通訊 每個物件都有自己的由其他的物件所構建的儲存,也就是物件可以包含物件 每個物件都有它的型別 也就是類 某一特定型別的所有物件都可以接收相同的訊息,因為同一類事物有共同的特性 面向物件開發 •
繼承多型與虛擬函式及對類的理解
B是A的子類,子類會繼承父類的public方法,子類物件可以呼叫父類的public介面,但是子類和父類函式重名時,父類的方法會被子類覆蓋(隱藏),子類呼叫和父類同名同參函式或者過載父類的函式後不可以直接呼叫父類函式,需要加A::fun()呼叫,父類的protect方
面試常考 類 物件 介面 繼承 多型 異常 多執行緒 集合框架 泛型 IO流
(6)多型的出現程式碼的特點: 在多型中,(非靜態)成員函式的特點, 在編譯時期(javac):參閱引用型變數所屬的類中是否有呼叫的方法。如果有,編譯通過,如果沒有,編譯失敗。 在執行時期(java):參閱物件所屬的類中是否有呼叫的方法。 多型時就是: 父 a=new 子(); 在多型中
封裝繼承多型總結
封裝 封裝按照我個人的理解, 將屬性私有化, 提供相應的getters和setters方法, 重toString方法 根據相關業務過載建構函式 優點: 遮蔽細節 提高安全性 在繼承中涉及到構造方法,構造方法沒有返回值型別,預設不寫時JVM會預設加上無參
3、【C++】繼承/多型
面向物件的三個基本特徵是:封裝、繼承、多型。其中,封裝可以隱藏實現細節,使得程式碼模組化;繼承可以擴充套件已存在的程式碼模組(類);它們的目的都是為了——程式碼重用。而多型則是為了實現另一個目的——介面重用! 封裝:將一類事物所共有的屬性和行為方法進行總結,封裝在一個類中
JAVA 封裝 繼承 多型
封裝: 封裝步驟: 1.使用private修飾需要被封裝的屬性。 2.提供一個公共的方法設定或獲取該私有成員屬性。(set屬性名(),get屬性名()) 程式碼: class Member { String name; private String se
Java開發知識之Java的繼承多型跟介面
一丶繼承 1.繼承的寫法 在Java中繼承的 關鍵字是 extends 代表一個類繼承另一個類. 繼承的含義以及作用: 繼承就是基於某個父類的擴充套件.制定出來的一個新的子類.子類可以繼承父類原有的屬性跟方法. 也可以自己增加特有的屬性跟方法. 程式碼例如
Java開發知識之Java的繼承多型跟介面*
Java開發知識之Java的繼承多型跟介面 一丶繼承 1.繼承的寫法 在Java中繼承的 關鍵字是 extends 代表一個類繼承另一個類. 繼承的含義以及作用: 繼承就是基於某個父類的擴充套件.制定出來的一個新的子類.子類可以繼承父類原有的屬性跟方法. 也可以自己增加特有
封裝繼承多型-java面向物件三大特徵
第七章 封裝和繼承一、面向物件的三大特徵 封裝、繼承、多型二、封裝 將類的屬性(欄位)設定為私有的(private),並新增getter/setter方法操作屬性。 注意:get|set方法
java基礎-單利模式/繼承/多型
單利模式:23種設計模式 單例類只能有一個例項。 單例類必須自己建立自己唯一的例項。 單例類必須給所有其他物件提供這個例項。 餓漢式單利模式 /* 餓漢式單利模式 */ class MySingleTon{ private stati
黑馬程式設計師----Java基礎之面向物件(封裝 繼承 多型)(二)
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
黑馬程式設計師----Java基礎之面向物件(封裝 繼承 多型)
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
【面試題】Java三大特性封裝繼承多型總結
本文內容總結於多篇部落格,參考到的地方在文中都會一一列出 http://www.cnblogs.com/ibalintha/p/3897821.html 1.封裝 封裝的定義: 首先是抽象,把事物抽象成一個類,其次才是封裝,
Java基礎之理解封裝,繼承,多型三大特性
目錄 封裝 繼承 多型 封裝 封裝隱藏了類的內部實現機制,可以在不影響使用的情況下改變類的內部結構,同時也保護了資料。對外界而已它的內部細節是隱藏的,暴露給外界的只是它的訪問方法。 程式碼理解 public class Student { public Stud
C++繼承多型實現介面內容封裝例子
封裝(private中的資料都通過Get與Set來訪問)可以使程式碼模組化,繼承(:)可以擴充套件已存在的程式碼,而多型的目的是為了介面重用(即相同名字的介面可能實現不同的Function功能,因為他們可能可以擴充套件成一個子類)。多型通過
python-15 繼承 多型
所有類的父類是object 繼承的寫法 class Person: def __init__(self,name,age): self.name = name s
單例模式 繼承 多型
單例模式有23種,但是她必須滿足 一個類產生一個例項。 單例模式有以下特點: (1)單例模式只有一個例項; (2)單例類必須建立自己的唯一例項; (3)單例類必須給所有其他物件提供這一例項; 懶漢式單例模式: class MySinglecTon{ pr
封裝 繼承 多型 總結和心得和案例
一想到面向物件,首先我們第一想到的就是封裝,繼承,多型,介面等等。以下我做的一些筆記和一些經典的例子。 :面向物件 (1)面向物件 面向物件是基於面向過程的程式設計思想 (2)面向物件的思想特點 A:是一種更符合我們思考習慣的思想 B:把複雜的事情簡單化 C:讓我們從執行者