`

java编程操作心血2

阅读更多

     银行,账户两个类对象的关系。has-a关系

 银行:package pc1;

 

public class Bank {

String bankName;//银行名

double deposit_rate;//存款率

double borrow_rate;//取款率

double transfer_fee;//转账率

public String getBankName() {

return bankName;

}

public void setBankName(String bankName) {

this.bankName = bankName;

}

public double getDeposit_rate() {

return deposit_rate;

}

public void setDeposit_rate(double deposit_rate) {

this.deposit_rate = deposit_rate;

}

public double getBorrow_rate() {

return borrow_rate;

}

public void setBorrow_rate(double borrow_rate) {

this.borrow_rate = borrow_rate;

}

public double getTransfer_fee() {

return transfer_fee;

}

public void setTransfer_fee(double transfer_fee) {

this.transfer_fee = transfer_fee;

}

public Bank(String bankName, double deposit_rate, double borrow_rate,double transfer_fee) 

{

super();

this.bankName = bankName;

this.deposit_rate = deposit_rate;

this.borrow_rate = borrow_rate;

this.transfer_fee = transfer_fee;

}

 

}

账户:package pc1;

 

import java.util.Date;

 

public class Account {

private String user_id;//用户号

private String user_Name;//用户名

private Date account_date;//申请日期

private Bank   bank;//银行(这个账户是属于哪个银行的),

private double account_money;//金额

public Account(String user_id, String user_Name, Bank bank,//构造函数

double account_money) {

super();

this.user_id = user_id;

this.user_Name = user_Name;

this.bank = bank;

this.account_money = account_money;

this.account_date=new Date();

}

 

public void deposit(double account_money){//存钱和银行无关

if(account_money>0){

this.account_money=this.account_money+account_money;

}else

{

System.out.println("存款金额不能小0!");

}

 

}

 

public void withdraw(double money){//取钱和银行没有关系

if(account_money>0){

this.account_money=this.account_money-money;

}else

{

System.out.println("取款金额不能小0!");

}

}

 

public void transfer(double money, Account account){//转账要考虑率

if(money>0){

this.account_money=this.account_money-money-this.bank.getTransfer_fee()*(money/100);

account.deposit(money);

}else{

System.out.println("转账金额不能小0!");

}

}

 

public void settle(){

this.account_money=this.account_money+this.account_money*this.bank.getDeposit_rate()*2;

}

 

public void displayMoney(){

System.out.println(user_Name+"的余额是: "+this.account_money);

}

 

public void displayAccountMessage(){

System.out.println("账户名        账号                  开户日期                    结算日期                     账户余额     ");

System.out.print(this.user_Name);

System.out.print("   "+this.user_id);

System.out.println("   "+this.account_date);

System.out.println("   "+new Date());

System.out.println("   "+this.account_money);

 

}

}

//has-a关系的实际使用

test

package pc1;

 

public class Test {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Bank bank1=new Bank("CBC", 0.035, 0.0581, 3);

Bank bank2=new Bank("BC", 0.025, 0.0585, 1);

Account ac1=new Account("10001", "甲",bank1 ,200000.0);

Account ac2=new Account("20001", "乙",bank2 ,300000.0);

ac1.displayAccountMessage();

ac2.displayAccountMessage();

ac2.transfer(100000.0, ac1);

ac1.settle();

ac2.settle();

ac1.displayAccountMessage();

ac2.displayAccountMessage();

}

 

}

输出:甲   10001   Mon Jan 05 23:27:19 CST 2015

   Mon Jan 05 23:27:19 CST 2015

   200000.0

账户名        账号                  开户日期                    结算日期                     账户余额     

乙   20001   Mon Jan 05 23:27:19 CST 2015

   Mon Jan 05 23:27:19 CST 2015

   300000.0

账户名        账号                  开户日期                    结算日期                     账户余额     

甲   10001   Mon Jan 05 23:27:19 CST 2015

   Mon Jan 05 23:27:19 CST 2015

   321000.0

账户名        账号                  开户日期                    结算日期                     账户余额     

乙   20001   Mon Jan 05 23:27:19 CST 2015

   Mon Jan 05 23:27:19 CST 2015

   208950.0

 

DEMO2

多态fuxi

package pc3;

class Father{   

    //父类有一个打孩子方法   

    public void hitChild(){   

    }   

}   

class Son1 extends Father{   

    //重写父类打孩子方法   

    public void hitChild(){   

      System.out.println("为什么打我?我做错什么了!");   

    }   

}   

class Son2 extends Father{   

    //重写父类打孩子方法   

    public void hitChild(){   

      System.out.println("我知道错了,别打了!");   

    }   

}   

class Son3 extends Father{   

    //重写父类打孩子方法   

    public void hitChild(){   

      System.out.println("我跑,你打不着!");   

    }   

}   

/*

  父亲打孩子,不同的孩子表现出不同的行为

 */

public class FS {

 

public static void main(String[] args) {

// TODO Auto-generated method stub

Father father;   

     father = new Son1();   

     father.hitChild();   

     father = new Son2();   

     father.hitChild();   

     father = new Son3();   

     father.hitChild(); 

}

 

}

 

    //都调用了相同的方法,出现了不同的结果!这就是多态的表现。

 

//上面的示例也就是工厂模式的一个简单体现

 

 

Demo3、鸭子会飞与否,也会叫与否,但是所有的鸭子都会游泳,设计一个鸭子类

package pc3;

abstract class Duck {

protected  FlyBehavior  flyBehavior;     

/*

接口类型的引用,作为成员变量,可以指向不同的实现这个接口的类

*/

protected  QuackBehavior  quackBehavior; 

 

public void setFlyBehavior(FlyBehavior flyBehavior) {

this.flyBehavior = flyBehavior;//设立新的flyBehavior类型的值

}

 

public void setQuackBehavior(QuackBehavior quackBehavior) {

this.quackBehavior = quackBehavior;//设立新的quackBehavior类型的值

}

 

public void performFly(){

flyBehavior.fly();           //调用flyBehavior的fly()方法

}

 

public void performQuack(){

quackBehavior.quack();  //调用quackBehavior的quack ()方法

}

 

public abstract void display();         //定义一个显示鸭子外观的抽象方法

 

public void swim(){                 //定义一个所有鸭子都会游泳的方法

System.out.println("All ducks float, even decoys!");

}

}

 

 

 interface FlyBehavior {   //定义一个模拟鸭子飞的行为接口

   void fly();

}

 interface QuackBehavior { //定义一个模拟鸭子叫的行为接口

 void quack();

 }

 

  class FlyNoWay implements FlyBehavior{  //不会飞的

public void fly()

{

System.out.println("鸭子不会飞");

}

}

   class FlyWithWings implements FlyBehavior {  //会飞的

   public void fly()

   {

   System.out.println("鸭子会飞");

   }

}

   //实现flyBehavior这个接口,要么鸭子会飞,要么不会飞

    class Quack implements QuackBehavior{  //第一种叫声

   public void quack()

   {

System.out.println("第一种叫声");

   }

   }

   class Squeak implements QuackBehavior{//第二种叫声

    public void quack()

       {

    System.out.println("第二种叫声");

       }

   }

    class MuteQuack implements QuackBehavior{ //不会叫

    public void quack()

       {

    System.out.println("第三种叫声");

       }

   }

   

//实现quackBehavior这个接口,类里面要实现接口的每一个方法

 

public class ADuck extends Duck {  //定义一个鸭子类,其中含有main()的测试类

public ADuck() {

flyBehavior = new FlyWithWings();  //生成一个会飞的鸭子对象,接口的引用指向对象

quackBehavior = new Squeak();    //生成一个会叫的鸭子对象。接口的引用指向该对象

}

 

public void display() {

System.out.println("I'm a duck model.");

}

 

public void changeBehavior() {          

setFlyBehavior(new FlyNoWay());  //生成一个不会飞的鸭子对象

setQuackBehavior(new MuteQuack()); ////生成一个不会叫的鸭子对象

}

 

public static void main(String[] args) {

ADuck aDuck = new ADuck();

aDuck.display();

aDuck.swim();

aDuck.performFly();

aDuck.performQuack();

aDuck.changeBehavior();

aDuck.performFly();

aDuck.performQuack();

}

}

 

 

输出:I'm a duck model.

All ducks float, even decoys!

鸭子会飞

第二种叫声

鸭子不会飞

第三种叫声

 

分享到:
评论

相关推荐

    Java笔记,本人学习java的心血笔记

    #### 第2章:Java面向对象程序设计 面向对象编程(OOP)是Java的核心特性之一,它将数据和方法封装在一起形成类和对象。 ##### 2.1 面向对象设计思想 面向对象设计强调对象之间的交互,通过类来描述对象的行为和...

    java夜未眠

    这份笔记涵盖了Java编程语言的各个方面,对于任何希望深入理解和掌握Java的人来说,都是一份极其宝贵的参考资料。 首先,我们来探讨Java的基础知识。Java是一种面向对象的编程语言,它的设计目标是“一次编写,到处...

    c&c++&java;试题大全(有面试题、笔试题、答案、面试心得等,多年心血的总结)

    这是一份综合性的编程试题集,包含了C、C++和Java三种语言的相关面试题、笔试题及其答案。这份资料是作者多年经验的结晶,旨在帮助学习者全面了解和掌握这三个编程领域的核心概念、语法、算法以及编程技巧。 **...

    java扰码器

    Java扰码器是一种工具,主要用于保护Java应用程序的源代码,防止未经授权的反编译和篡改。在软件开发中,源代码是程序员的心血结晶,包含了许多设计思想和商业秘密。因此,对于发布到公共环境的Java应用,尤其是商业...

    Zelix KlassMaster 12 JAVA 加密利器

    总的来说,Zelix KlassMaster 12是JAVA开发者在代码安全方面的得力助手,它通过混淆和加密技术,为JAVA应用程序构建了一道坚固的防护屏障,有效地保护了开发者的心血不被轻易侵犯。通过深入理解和使用ZKM 12.0.1,...

    java推箱2.0源代码

    对于学习Java编程、游戏开发或者想要了解推箱游戏工作原理的人来说,这份源代码是一份宝贵的资源。接下来,我们将深入探讨其中涉及的关键知识点。 1. **Java编程基础**:源代码是用Java语言编写的,因此首先需要...

    java代码混淆工具

    在Java中,混淆主要是针对字节码(.class文件)进行操作,因为Java程序最终会被编译成字节码,并在JVM上运行。混淆后的代码虽然不影响程序的功能执行,但使得反编译后的结果变得极其复杂,极大地增加了逆向工程的...

    SCJP5.0全套资料(个人心血笔记&2套题库)

    SCJP(Sun Certified Java Programmer)5.0是Java编程领域的一个重要认证,它验证了开发者对Java SE 5.0平台的基本理解与编程能力。这个认证对于那些希望深入理解Java语言特性和准备进入IT行业的专业人士来说,是...

    java初学者笔记宝典(经典)

    这些是Java编程的基础,对于构建任何Java应用都是必不可少的。 4. **XML**:XML(可扩展标记语言)用于存储和传输数据,常用于Web服务和配置文件。了解XML的语法、解析和创建XML文档是Java开发者的必备技能。 5. *...

    weiqi.rar_java围棋代码_weiqi

    【围棋与Java编程】 在IT领域,围棋是一种极具策略性的二人对弈游戏,它与编程的结合为开发者提供了丰富的挑战和学习机会。本资源“weiqi.rar”包含了一个使用Java语言编写的围棋应用程序,这使得程序员能够深入...

    初学Java编写的万年历

    【描述】:“初学Java编写的万年历程序,花费了不少心血,大家可以参考下!” 这表明这个程序可能包含了作者深入理解Java核心概念的努力。在开发万年历程序时,开发者通常需要处理日历系统,包括公历、农历等,以及...

    源码网站大全 C语言源代码 C++语言源代码 java语言源代码

    在源码网站上,你可以找到C语言的基本语法示例、算法实现、操作系统内核片段等,这对于初学者理解和提高编程能力非常有帮助。 2. C++语言源代码:C++是C语言的扩展,增加了面向对象的特性,被广泛用于游戏开发、...

    java经典源代码6

    在Java编程领域,源代码是开发者的心血结晶,它们展示了程序设计的思想和实现方式。"java经典源代码6"这个压缩包聚焦于游戏开发,包含了华容道和拼图等经典小游戏的源代码,这些都是Java程序员提升技能和理解游戏...

    JBuilder固定资产管理系统java项目源码.zip

    在IT领域,尤其是软件开发中,源码是程序员的心血结晶,是程序运行的基础。本项目“JBuilder固定资产管理系统”是一款基于Java语言设计的系统,旨在实现对固定资产的有效管理和追踪。通过深入分析其源码,我们可以...

    java web开发文档集中营

    【描述】"这是我最近花了很大的力气搜集来的希望可以帮到你"表明这个压缩包包含的资料是经过精心整理的,包含了作者对Java Web开发深入研究的心血结晶,目的是为了帮助读者节省寻找资源的时间,快速获取必要的学习和...

    calculator_java.zip_Java GUI计算器_sin函数 java

    这是一个java写的计算器,除了加减乘除外还实现了许多的函数,比如sin,cos,求倒数,二十进制转换等,是我十多天的心血,程序非常长,也成功实现了设定的功能,有漂亮的用户界面,通过这个程序可以学到很多关于java ...

    Java字节码加密工具

    Java字节码加密工具是一种用于保护Java应用程序源代码安全的工具。在软件开发过程中,源代码是开发者的心血结晶,包含了许多重要的商业逻辑和技术细节。然而,Java的字节码(.class文件)虽然相对于源代码(.java...

    商业编程-源码-调皮的老鼠 鼠标控制程序源代码.zip

    在IT行业中,编程是一项至关重要的技能,特别是在...通过这个“调皮的老鼠”鼠标控制程序,你将有机会实践和巩固你的编程技能,尤其是对操作系统交互和事件处理的理解,这对于任何IT专业人员来说都是一项宝贵的经验。

    java 小程序 圣诞贺卡(仿qq农场小游戏)

    这是一个心血来潮的小作品...... | | 身边的朋友都喜欢玩农场,圣诞节将近,见到朋友的心情改的是想种圣诞老人,于是就 | | 有了这个小玩意。希望大家快乐。初学java,把一些基本的东西,尽量都用上了。适合初学...

Global site tag (gtag.js) - Google Analytics