貸款購買房屋時,支付首付款是一種功能操做,定義在Payment接口中。住宅產權房屋類和商業產權房屋類均具備支付首付款的功能。依據以上內容,建立一個接口和兩個類:java
(1)接口Payment,包含:ide
double downPay(double price,double area):一個計算房屋首付款的方法,參數price表明房屋每平方米的價格,area表明房屋的總平方數,即面積。
(2) Payment接口的非抽象使用類——Residence類(住宅產權房屋類),包含:測試
double downPay(double price,double area):重寫計算房屋首付款的方法,並將結果返回(住宅產權房屋的首付比例爲總房款的20%)。
(3) Payment接口的非抽象使用類——Commercial類(商業產權房屋類),包含:3d
double downPay(double price,double area):重寫計算房屋首付款的方法,並將結果返回(商業產權房屋的首付比例爲總房款的45%)。
在主類Test中,建立住宅產權房屋對象,完成住宅產權房屋首付款的計算。再將定義商業產權房屋對象傳遞給Payment接口對象,以後利用接口回調完成商業產權房屋首付款的計算。輸入測試數據,完成結果的輸出。code
package com.tomotoes.probleam.ten; public interface Payment { double getRatio(); default double downPay(double price, double area) { return price * area * getRatio(); } }
package com.tomotoes.probleam.ten; /** * @author Simon * @project practice * @package com.tomotoes.probleam.ten * @date 2019/11/6 8:48 */ public class Residence implements Payment { public static final double RATIO = 0.2; @Override public double getRatio() { return RATIO; } }
package com.tomotoes.probleam.ten; /** * @author Simon * @project practice * @package com.tomotoes.probleam.ten * @date 2019/11/6 8:49 */ public class Commercial implements Payment { public static final double RATIO = 0.45; @Override public double getRatio() { return RATIO; } }
package com.tomotoes.probleam.ten; import java.util.Scanner; /** * @author Simon * @project practice * @package com.tomotoes.probleam.ten * @date 2019/11/6 8:46 */ public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); { System.out.println("請輸入住宅產權房屋的信息(每平方米的價格 , 總平方數)"); Residence residence = new Residence(); final double result = residence.downPay(scanner.nextDouble(), scanner.nextDouble()); System.out.println(result); } { System.out.println("請輸入住宅產權房屋的信息(每平方米的價格 , 總平方數)"); Payment payment = new Commercial(); final double result = payment.downPay(scanner.nextDouble(), scanner.nextDouble()); System.out.println(result); } } }