@Hubertoo
2017-07-17T05:31:39.000000Z
字数 5815
阅读 794
达内
Animal a = new Dog();Dog dog = (Dog) a;//一定要注意父类继承关系或者接口实现关系,不然会有:ClassCastException//这个时候就要用到instanceof关键字来判断
//内部类加上外部类package day02;public class Outer {private int time;private Inner inner;Outer(int time){this.time = time;inner = new Inner();inner.say();}public void printTime(){System.out.println(time);}class Inner{public void say(){time++;System.out.println("hahahaha");}}}//测试类package day02;public class OuterTest {public static void main(String[] args) {Outer o = new Outer(100);o.printTime();}}//结果是:// hahahaha// 101
//定义Action接口package day02;public interface Action {public void execute();}//匿名内部类package day02;public class Main {public static void main(String[] args) {Action action = new Action(){public void execute(){System.out.println("Hello World");}};action.execute();}}
Shape抽象类
package day02;public abstract class Shape {protected double c;public abstract double area();}
Circle类
package day02;public class Circle extends Shape{public Circle(double c){this.c = c;}/*** 计算圆形的面积*/public double area(){return 0.0625*c*c;}}
Square类
package day02;public class Square extends Shape {public Square(double c){this.c = c;}/*** 计算圆形的面积*/public double area(){return 0.0725*c*c;}}
TestShape类
package day02;public class TestShape {public static void main(String[] args) {Shape[] shapes = new Shape[2];shapes[0] = new Circle(4);shapes[1] = new Square(4);System.out.println(shapes[0].area());System.out.println(shapes[1].area());}}// 运行结果是:1.0 1.16
银联接口
package day02;public interface UnionPay {//查看余额public double getBalance();//取钱public boolean drawMoney(double number);//检查密码public boolean checkPwd(String input);}
工行接口
package day02;public interface ICBC extends UnionPay {//增加在线支付功能public void payOnline(double number);}
农行接口
package day02;public interface ABC extends UnionPay{//增加支付电话费的功能public boolean payTelBill(String phoneNum, double sum);}
工行实现类
package day02;public class ICBCImpl implements ICBC {private double money;private String pwd;public ICBCImpl(double money, String pwd) {super();this.money = money;this.pwd = pwd;}@Overridepublic double getBalance() {return money;}@Overridepublic boolean drawMoney(double number) {if(number <= money){money -= number;return true;}return false;}@Overridepublic boolean checkPwd(String input) {if(pwd.equals(input)){return true;}return false;}@Overridepublic void payOnline(double number) {if(number < money){money -= number;}}}
农行实现类
package day02;public class ABCImpl implements ABC{//卡内余额,允许透支2000private double balance;//帐号密码private String password;public ABCImpl(double balance, String password) {super();this.balance = balance;this.password = password;}@Overridepublic double getBalance() {// TODO Auto-generated method stubreturn balance;}@Overridepublic boolean drawMoney(double number) {if(number <= (balance - 2000)){balance -= number;return true;}return false;}@Overridepublic boolean checkPwd(String input) {if(password.equals(input)){return true;}return false;}@Overridepublic boolean payTelBill(String phoneNum, double sum) {if(phoneNum.length() == 11 && (balance-sum >= -2000)){balance -= sum;return true;}return false;}}
工行测试类
package day02;import java.util.Scanner;public class UnionPayTest {public static void main(String[] args) {UnionPay icbc = new ICBCImpl(2000,"123456");Scanner input = new Scanner(System.in);System.out.println("输入密码:");if(icbc.checkPwd(input.next())){System.out.println("请输入金额:");double num = Double.parseDouble(input.next());if(icbc.drawMoney(num)){System.out.println("取钱成功,卡余额为:" + icbc.getBalance());}else{System.out.println("取钱失败");}}else{System.out.println("密码错误");}input.close();}}
ATM机系统
ABCATM类
package day02;import java.util.Scanner;/*** 用来描述插入银行卡后的操作** @author zeyan**/public class ABCATM {private UnionPay card;public void insertCard(UnionPay userCard){if(card == null){card = userCard;}}private void outCard(){card = null;}private void showBalance(){System.out.println("当前余额是:" + card.getBalance());}private void takeMoney(){Scanner input = new Scanner(System.in);System.out.println("输入取款金额:");double number = Double.parseDouble(input.next());if(card.drawMoney(number)){System.out.println("取款成功");}else{System.out.println("取款失败");}}private void payTelBill(){Scanner input = new Scanner(System.in);if(card instanceof ABC){ABC abcCard = (ABC) card;System.out.println("请输入电话号码:");String telNum = input.next();System.out.println("请输入缴费额:");double sum = Double.parseDouble(input.next());if(abcCard.payTelBill(telNum, sum)){System.out.println("缴费成功");}else{System.out.println("缴费失败");}}else{System.out.println("你的卡不是农行卡");}}public void allMenu(){Scanner input = new Scanner(System.in);System.out.println("请输入密码:");String pwd = input.next();if(card.checkPwd(pwd)){System.out.println("请选择功能: \n 1.查看余额 2.取款 3.缴电话费");int choice = Integer.parseInt(input.next());switch(choice){case 1:showBalance();break;case 2:takeMoney();break;case 3:payTelBill();break;default:System.out.println("非法输入");}}else{System.out.println("密码错误");}this.outCard();}}
ATMTest类
package day02;public class ATMTest {public static void main(String[] args) {ABCATM atm = new ABCATM();ABCImpl abc = new ABCImpl(1000, "123456");atm.insertCard(abc);atm.allMenu();}}