标签:return setter 总计 三角形 修改 private 独立性 default 构建
一、封装
什么是封装
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问
封装的步骤
1、私有化属性 修改属性的可见性
2、创建属性方法---setter/getter方法 创建公有的setter/getter方法
3、在set/get方法中设置赋值或取值条件 在setter/getter方法中加入属性控制语句
封装的意义:
1、便于使用者正确使用系统,防止错误修改属性
2、有助于系统之间的松耦合,提高系统独立性
3、提高软件的可重用性
4、降低了构建大型系统的风险
二、课后习题
1、模拟一个简单的购房商贷月供计算器,按照以下公式计算总利息和每月还款金额
总利息=贷款金额*利率;
每月还款金额=(贷款金额+总利息)、贷款年限
贷款年限不同利率也不同,如下示例:
package com.java_1_16_fangdai; /** * 计算总计息及月供 * @author Administrator *2019-1-16 */ public class Rate { private double money;//本金 private double sum;//总利息 private int year;//年限 private double monMoney; public double getMonMoney() { return monMoney; } public void setMonMoney(double monMoney) { this.monMoney = monMoney; } public int getYear() { return year; } //根据选择确定贷款年限 public void setYear(int num) { if(num==1) { this.year = 3; }else if(num==2){ this.year = 5; }else if(num==3) { this.year = 20; }else { System.out.println("报歉!目前无此贷款年限,默认5年!"); this.year = 5; } } public double getSum() { return sum; } public void setSum(double sum) { this.sum = sum; } public double getMoney() { return money; } public void setMoney(double money) { this.money = money; } //根据年限算出总利息 public double rateMoney() { switch(year) { case 3: this.sum = this.money*0.0603; break; case 5: this.sum = this.money*0.0612; break; case 20: this.sum = this.money*0.0639; default: break; } return this.sum; } //计算月供并输出 public void monthly() { this.monMoney = (this.money + this.sum)/(this.year*12); System.out.println("每个月的月供是:"+this.monMoney); } }
package com.java_1_16_fangdai; import java.util.Scanner; public class RateTest { public static void main(String[] args) { Scanner cxj = new Scanner(System.in); Rate r = new Rate(); System.out.print("请输入贷款金额:"); r.setMoney(cxj.nextDouble()); System.out.print("请选择贷款年限(1、3年(36个月) 2、5年(60个月) 3、20年(240个月)):"); r.setYear(cxj.nextInt()); System.out.println("总利息是:"+r.rateMoney()); r.monthly(); } }
结果示例:
2、根据三角形的三条边长,判断是直角三角形、钝角三角形或者锐角三角形
package com.java_1_16_trigon; /** * 判断三角形种类 * @author Administrator *2019-1-16 */ public class Trigon { private int a; private int b; private int c; public int getA() { return a; } public void setA(int a) { this.a = a; } public int getB() { return b; } public void setB(int b) { this.b = b; } public int getC() { return c; } public void setC(int c) { this.c = c; } public void trTest() { //先判断是否可以构成三角形 if(((a+b)>c)&&((a+c)>b)&&((b+c)>a)){ //如果可以构成三角形,再判断是否为直角三角形 if(((a*a+b*b)==c*c)||((a*a+c*c)==b*b)||((b*b+c*c)==a*a)) { System.out.println("这是一个直角三角形。"); //如果不直角,再判断是钝角三角形还是锐角三角形 }else if(((a*a+b*b)<c*c)||((a*a+c*c)<b*b)||((b*b+c*c)<a*a)) { System.out.println("这是一个钝角三角形。"); }else { System.out.println("这是一个锐角三角形。"); } //不足构成三角形 }else { System.out.println("这不是一个三角形。"); } } }
package com.java_1_16_trigon; import java.util.Scanner; public class TrTest { public static void main(String[] args) { Scanner cxj = new Scanner(System.in); Trigon t = new Trigon(); boolean select = true; do { System.out.print("请输入第一条边的大小:"); t.setA(cxj.nextInt()); System.out.print("请输入第二条边的大小:"); t.setB(cxj.nextInt()); System.out.print("请输入第三条边的大小:"); t.setC(cxj.nextInt()); t.trTest(); System.out.print("请问是否继续(y/n):"); String se = cxj.next(); if(se.equals("n")) { select = false; }else { select = true; } }while(select); System.out.println("感谢您的使用!"); } }
结果示例:
标签:return setter 总计 三角形 修改 private 独立性 default 构建
原文地址:https://www.cnblogs.com/chenxj/p/10279013.html