方法与构造方法练习

【练习题】1、构造方法与重载
定义一个牛肉面的类(Noodle),它的属性有,
牛肉面宽度 width
尺寸:size (大碗还是小碗) 大碗8元,小碗6元
是否加肉:beef :加肉+4元
加蛋的数量:eggs :每个1元;
定义构造方法来根据不同的条件创建不同的牛肉面
Noodle(){
//不加肉,大碗,不加蛋,中宽;
}
Noodle(String width,int size)
Noodle(String width,int size,boolean beef);
Noodle(String width,int size,boolean beef,int eggs);
再定义一个方法,用来显示当前牛肉面的信息,并显示金额;
void showNoodleInfo();
代码实现:

package day07.zuoye;public class Noodle {String width;boolean size;boolean beef;int eggs;public Noodle() {}public Noodle(String a, boolean b) {width = a;size = b;}public Noodle(String a, boolean b, boolean c) {width = a;size = b;beef = c;}public Noodle(String a, boolean b, boolean c, int d) {width = a;size = b;beef = c;eggs = d;}public void showNoodleInfo() {int money = 6;String size_S = "小碗";String beef_B = "不加肉";if (size) {money = 2;size_S = "大碗";}if (beef) {money += 4;beef_B = "加肉";}money += eggs;System.out.println(beef_B + "," + size_S + ",加" + eggs + "个蛋," + width + ",共计" + money + "元");}public static void main(String[] args) {Noodle n1 = new Noodle("中宽", true, true, 2);n1.showNoodleInfo();System.out.println("========================");Noodle n2 = new Noodle("最宽", false, false, 1);n2.showNoodleInfo();}
}

运行结果展示:

【练习题】2、构造方法与重载、包
编写Addition类,该类中应包含一组实现两数相加运算的重载方法。
实现加法运算的方法,应接受两个参数(即加数和被加数),方法将两个参数进行加法运算后,返回相加结果。考虑可能针对不同的数据类型进行计算,重载一组方法,包括整型、长整型、浮点型、双精度浮点型、还有字符串。 在main方法中创建Addition类的实例,分别调用重载方法测试其效果。 应将Addition类打入到包中,以自己名字的拼音为包命名。
代码实现:

package day07.zuoye;public class Addition {public int add(int a, int b) {return a + b;}public long add(long a, long b) {return a + b;}public double add(double a, double b) {return a + b;}public float add(float a, float b) {return a + b;}public String add(String a, String b) {return a + b;}public static void main(String[] args) {Addition add1 = new Addition();int sum1 = add1.add(4, 5);System.out.println(sum1);System.out.println("=========");double sum2 = add1.add(4.5, 5.6);System.out.println(sum2);System.out.println("=========");float sum3 = add1.add(5.5f, 6.6f);System.out.println(sum3);System.out.println("=========");String sum4 = add1.add("我爱", "学习");System.out.println(sum4);System.out.println("=========");}
}

运行结果展示:

【练习题】3、构造方法与重载
建立一个汽车类,包括轮胎个数,汽车颜色,车身重量等属性。并通过不同的构造方法创建事例。
至少要求:汽车能够加速,减速,停车。
要求:命名规范,代码体现层次,有友好的操作提示。
代码实现:

package demo.lei;public class Car {int number;String color;double weigth;public Car(int a, String b, double c) {number = a;color = b;weigth = c;}public void Info() {System.out.println("汽车有" + number + "个轮胎," + "颜色为" + color + ",重量为" + weigth + "千克");}public void speedUp(int a) {System.out.println("加速" + a + "千米/小时成功");}public void speedDown(int a) {System.out.println("减速" + a + "千米/小时成功");}public void park() {System.out.println("停车成功!");}public static void main(String[] args) {Car c1 = new Car(8, "粉色", 1234.567);c1.Info();c1.speedUp(50);c1.speedDown(50);c1.park();}
}

运行结构展示:

【练习题】4、类的综合练习
1)、写一个名为Account的类模拟账户。该类的属性和方法如下图所示。该类包括的属性:账号id,余额balance,年利率annualInterestRate;包含的方法:访问器方法(getter和setter方法),取款方法withdraw(),存款方法deposit()。
Account
private int id
private double balance
private double annualInterestRate
public Account (int id, double balance, double annualInterestRate )
public int getId()
public double getBalance()
public double getAnnualInterestRate()
public void setId( int id)
public void setBalance(double balance)
public void setAnnualInterestRate(double annualInterestRate)
public double withdraw (double amount)
public void deposit (double amount)

提示:在提款方法withdraw中,需要判断用户余额是否能够满足提款数额的要求,如果不能,应给出提示。

2). 创建Customer类。
Customer
private String firstName
private String lastName
private Account account
public Customer(String f,String l)
public String getFirstName()
public String getLastName()
public Account getAccount()
public void setAccount(Account account)

a. 声明三个私有对象属性:firstName、lastName和account。
b. 声明一个公有构造器,这个构造器带有两个代表对象属性的参数(f和l)
c. 声明两个公有存取器来访问该对象属性,方法getFirstName和getLastName返回相应的属性。
d. 声明setAccount 方法来对account属性赋值。
e. 声明getAccount 方法以获取account属性。

3).写一个测试程序。
(1) 创建一个Customer ,名字叫 Jane Smith, 他有一个账号为1000,余额为2000元,年利率为 1.23% 的账户。
(2) 对Jane Smith操作。
存入 1000 元,再取出2000元。再取出1001元,再取出1000元。
(3) 打印出Jane Smith 的基本信息

成功存入 :1000.0
成功取出:2000.0
余额不足,取款失败
成功取出:1000.0
Customer [Smith, Jane] has a account: id is 1000, annualInterestRate is 1.23%, balance is 1140.0
代码实现:
1、Account类:

package demo.lei;public class Account {private int id;private double balance;private double annualInterestRate;public Account(){}public Account(int id,double balance,double annualInterestRate){this.id = id;this.balance = balance;this.annualInterestRate = annualInterestRate;}public void setId(int id){this.id = id;}public void setBalance(double balance){this.balance = balance;}public void setAnnualInterestRate(double annualInterestRate){this.annualInterestRate = annualInterestRate;}public int getId(){return id;}public double getBalance(){return balance;}public double getAnnualInterestRate(){return annualInterestRate;}public void withdraw(double amount){if(amount<=balance){balance-=amount;System.out.println("取款成功,取款金额 "+amount+" 元");System.out.println("余额为:"+balance+"元");}else{System.out.println("余额不足,取款"+amount+"元失败!");System.out.println("余额为:"+balance+"元");}}public void deposit(double amount){balance+=amount;System.out.println("存款成功,存款金额 "+amount+" 元");System.out.println("余额为:"+balance+"元");}
}

2、Customer类:

package demo.lei;import demo.lei.Account;public class Customer {private String firstName;private String lastName;private Account account;public Customer(){}public Customer(String f, String l) {firstName = f;lastName = l;}public String getFirstName() {return firstName;}public String getLastName() {return lastName;}public Account getAccount() {return account;}public void setAccount(Account account) {this.account = account;}
}

3、测试类Text:

package demo.lei;public class Text {public static void main(String[] args) {Customer cc = new Customer("Sminth","Jane");Account account = new Account();account.setId(1000);account.setBalance(2000);account.setAnnualInterestRate(0.0123);cc.setAccount(account);Account a = cc.getAccount();System.out.println("用户名:"+cc.getFirstName()+" "+cc.getLastName()+"\t账号:"+account.getId()+"\t余额:"+account.getBalance()+"\t年利率:"+account.getAnnualInterestRate());System.out.println("==========================");a.deposit(1000);System.out.println("==========================");a.withdraw(2000);System.out.println("==========================");a.withdraw(1001);System.out.println("==========================");a.withdraw(1000);}
}

运行结果展示:

Java方法与构造方法练习相关推荐

  1. Java方法及构造方法

    *************************构造函数(构造方法.构造器)Constructor************ 一.why 为什么用 Student s1 = new Student() ...

  2. JAVA中的方法和构造方法有什么区别

    JAVA中的方法和构造方法有什么区别 1.方法有返回类型,方法名小写,不能和类名相同:构造方法没有返回类型,void也不行,名与类名相同. 2.构造方法是初始化对象的重要途径,所以就算你给一个类没有定 ...

  3. 【反射机制】Java中的反射机制,使用反射机制创建对象、访问属性、方法、构造方法等

    这篇文章主要是整理了Java中的反射机制,包括:反射机制概念.反射机制访问构造方法.反射机制访问普通方法.反射机制访问属性,反射机制访问修饰符. 目录 一.反射机制概念 二.反射机制使用 (1)加载C ...

  4. java重载方法与构造方法 区别

    java构造方法与重载方法 1.什么是构造方法和重载方法呢? 通俗来讲构造方法就是与类名相同的方法,而重载方法则是一个类中有多个相同方法名的方法 构造方法特点: 1.不需要void关键字修饰2.不需要 ...

  5. java this关键字表示当前对象,可以访问属性、方法、构造方法

    this关键字的三种访问方式:属性.方法.构造方法 1.访问属性 为了命名的规范,利用this关键字区分了属性与局部变量 public class Persion {String name;char ...

  6. 【Android FFMPEG 开发】C++ 回调 Java 方法 模板 ( JavaVM *vm | JNIEnv *env | jobject instance | 引用类型 | 模板代码示例 )

    文章目录 I . Native 调用 Java 方法 II . JNIEnv *env 与 jobject instance III . JavaVM *vm IV . 局部引用 与 全局引用 分析 ...

  7. 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )

    文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...

  8. java中的构造方法,this、super的用法

    1.构造方法 定义:与类同名没有返回值的方法称为构造方法: public class test1 { private String name; private int age; public test ...

  9. java方法带参数返回值_Java方法中的参数太多,第6部分:方法返回

    java方法带参数返回值 在当前的系列文章中,我正在致力于减少调用Java方法和构造函数所需的参数数量,到目前为止,我一直专注于直接影响参数本身的方法( 自定义类型 , 参数对象 , 构建器模式 , ...

最新文章

  1. mysql5.7忘记root密码的修改方法
  2. 机器学习中的数据标准化
  3. ML DL 知乎问题收集
  4. s:selected的用法
  5. 百年难得一见!阿里园区惊现双月争辉奇观!
  6. word activex部件不能创建对象_如何用Word批量制作员工工作证?1分钟搞定1000份!只需三步...
  7. python慢为什么用的人还很多_为什么是所有人比python标准慢得多吗?
  8. linux安装-bin.rpm,Linux离线安装jdk,bin、rpm和tar.gz三种方式及配置jdk环境变量
  9. mysql5.5从零开始_【MySQL函数】MySQL 5.5从零开始学第六章
  10. 继裁员15%后 滴滴宣布本月25日开始减少员工福利
  11. java aqs原理_Java并发之AQS详解
  12. iOS开发-- 使用TestFlight进行Beta测试
  13. “会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!”(下)
  14. STM32驱动W25Q64读写数据
  15. Zemax学习笔记(7)- 双透镜设计实例
  16. 华为5.0系统如何不用ROOT激活XPOSED框架的步骤
  17. plist文件详细说明
  18. [ajax] 基础 HTTP相关问题-GET-POST-XHR使用-jQuery中的ajax-跨域-同源-jsonp-cors
  19. Xposed插件 - Android一键脱壳工具
  20. 李天平:技术以外的功夫

热门文章

  1. beeware下载显示脱机或者极度缓慢的解决办法
  2. SQL 修改已有数据表的字段数据类型 的方式
  3. AI识物,到底是门怎样的生意?
  4. html中写自增数字,WPS word中数字怎么自增 如何在word中设置数字的千位分隔符
  5. Android 高仿抖音双击点赞效果
  6. 英国政府:打造世界AI强国的18个建议(附报告下载)
  7. tengine配置ngx_http_footer_filter_module模块自动添加页脚信息 标识服务器信息
  8. FPGA图像处理-灰度化
  9. SQL中的case..when..then..else..end用法
  10. docker stop卡住的解决方案