《上机实验4 java类的应用》由会员分享,可在线阅读,更多相关《上机实验4 java类的应用(10页珍藏版)》请在金锄头文库上搜索。
1、1熟悉多态性的两种形式: 1) 方法重载 overload:在一个 Math 类中,定义多个同名方法 Add,分别用 来计算 2 个 int、float、double 型数之和,并写一个测试程序完成测试。2) 重写 override a) 定义一个父类 Sale,提供 2 个方法:getSalePrice 、setSalePrice,然 后再定义一个子类 DiscountSale,重写相关方法。写一个测试程序, 根据不同情况,选择不同的销售策略,验证多态性。 b) 定义一个父类 Game,提供方法 Play,然后再定义几个子类 Basketball,Football,分别重写 Play 方法,
2、然后写一个测试程序,验 证多态性。2定义一个抽象父类 Game,抽象方法 Play、getGameName,然后再定义 2 个 子类 Basketball,Football,分别重写抽象方法,然后写一个通用中间类,只 需要一个方法。用来调用各子类的以上方法。最后,写一个测试程序,通过 通用中间类验证多态性。 (指出通用中间类中的关键点是什么?)3在题 2 的基础上,若要增加一个新的子类 Tennis,实现扩展功能,如何去做? (注意:不可改变框架中的任何类 测试程序除外) - 总结关键点有哪 些?4针对题 2 进行改写。定义一个接口 Game,实现以上 2,3 题的内容。5将书本中例 6.1、
3、6.2、6.3 进行练习,理解相关使用规则。6自定义一个异常类:定义一个 BankAccount 类,其中方法(取钱): withdraw,当取的钱大于余额 balance 时,捕获异常。并写出测试程序验证。1熟悉多态性的两种形式: 1) 方法重载 overload:在一个 MyMath 类中,定义多个同名方法 Add, 分别用来计算 2 个 int、float、double 型数之和,并写一个测试程序 完成测试。package four.exercise.java;/*1) 方法重载overload:在一个MyMath类中,定义多个同名方法Add,分别用来计算2个int、float、doub
4、le型数之和,并写一个测试程序完成测试。*/public class MyMath int Add(int a, int b)return (a + b)*10;float Add(float a, float b)return (a + b)*20;double Add(double a, double b)return (a + b)*30;/测试代码 用来验证不同Add方法的调用(传入参数的类型不同,选取的Add方法不同)public static void main(String args)MyMath mm = new MyMath();int result1 = mm.Add(3,
5、 5);float result2 = mm.Add(3.0f, 5.0f);double result3 = mm.Add(3.0, 5.0);System.out.println(“result1 = “ + result1);System.out.println(“result2 = “ + result2);System.out.println(“result3 = “ + result3);2) 重写 override a) 定义一个父类 Sale,提供 2 个方法:getSalePrice 、setSalePrice, 然后再定义一个子类 DiscountSale,重写相关方法。写
6、一个测试 程序,根据不同情况,选择不同的销售策略,验证多态性。package four.exercise.java;/* a)定义一个父类Sale,提供2个方法:getSalePrice 、setSalePrice,* 然后再定义一个子类DiscountSale,重写相关方法。* 写一个测试程序,根据不同情况,选择不同的销售策略,验证多态性。* */class Sale String name=“; /销售活动名称:圣诞节促销、正常销售、情人节促销等等String goodsName=“; /某个商品的名称double salePrice=0.0; /某个商品的销售价格/默认构造方法 - 为了
7、子类的需要 Sale()/构造方法 - 创建对象时,即初始化销售活动名称、商品名称、销售价格 Sale(String name,String goodsName, double price)this.name = name;this.goodsName = goodsName;this.salePrice = price;/设置销售活动名称 void setSaleName(String name)this.name = name;/获取销售活动名称 String getSaleName()return name;/设置商品名称 void setGoodsName(String goodsNa
8、me)this.goodsName = goodsName;/获取商品名称 String getGoodsName()return goodsName;/获取销售价格 double getSalePrice()return salePrice;/设置其销售价格 void setSalePrice(double price)salePrice = price;void OutMessage()System.out.println(getSaleName() + “期间, 商品:“ + getGoodsName() + “的价格是:“ + getSalePrice(); class Discoun
9、tSale extends Saledouble discount=1.0;double getSalePrice()return salePrice*discount;void setSalePrice(double price)salePrice = price;void setDiscount(double discount)this.discount = discount;public class SaleDemopublic static void main(String args)/测试父类 SaleSale sale = new Sale(“正常销售“, “T恤“, 100.0)
10、; sale.OutMessage();sale.setSaleName(“圣诞节促销“); sale.setSalePrice(80.0);sale.OutMessage();/测试子类DiscountSale DiscountSale ds = new DiscountSale();ds.setSaleName(“情人节促销“);ds.setGoodsName(“牛仔裤“);ds.setSalePrice(120.0); /不打折时的价格 ds.OutMessage();ds.setDiscount(0.6); /打折:6折 ds.OutMessage();b) 定义一个父类 Game,提
11、供方法 Play,然后再定义几个子类 Basketball,Football,分别重写 Play 方法,然后写一个测试程序, 验证多态性。 /*b)定义一个父类Game,提供方法Play,然后再定义几个子类Basketball,Football,分别重写Play方法,然后写一个测试程序,验证多态性。 */package four.exercise.java;class Gamevoid play()class Basketball extends Gamevoid play()System.out.println(“现在开始打篮球!“); class Football extends Game
12、void play()System.out.println(“现在开始踢足球!“); class Tennis extends Gamevoid play()System.out.println(“现在开始打网球!“); /测试程序 public class GameDemo public static void main(String args)Game game;game = new Basketball();game.play();game = new Football();game.play();game = new Tennis();game.play();2定义一个抽象父类 Gam
13、e,抽象方法 play、getGameName,然后再定义 2 个子类 Basketball,Football,分别重写抽象方法,然后写一个通用中间 类,只需要一个方法。用来调用各子类的以上方法。最后,写一个测试 程序,通过通用中间类验证多态性。 (指出通用中间类中的关键点是什么? ) 通用中间类中的关键点是:方法的参数中,用抽象类来定义变量,这样,可 以确保传入任意子类对象。/* 定义一个抽象父类 Game,抽象方法 play、getGameName,然后再定义 2 个 子类 Basketball,Football,分别重写抽象方法,然后写一个通用中间类,只需要一个方法。用来调用 各子类的以
14、上方法。最后,写一个测试程序,通过通用中间类验证多态性。 (指出通用中间类中 的关键点是什么?)*/ package AbstractGame.four.exercise.java;abstract class Game public abstract void play(); public abstract String getGameName(); class Basketball extends Game String gameName;Basketball(String name) gameName = name; public void play() System.out.print
15、ln(“现在开始打篮球!“); public String getGameName() return gameName; class Football extends Game String gameName;Football(String name) gameName = name; public void play() System.out.println(“现在开始踢足球!“); public String getGameName() return gameName; / 中间类 - 通过中间类,接收参数为 Game 类的对象或 Game 类的子类对象, 从而调用不同子类的 play 方
16、法 class MiddleClass void callPlay(Game game) System.out.print(game.getGameName() + “运动时间:“); game.play(); /测试程序 public class AbstractGameDemo public static void main(String args) Game game; MiddleClass mc = new MiddleClass();game = new Basketball(“篮球“); mc.callPlay(game);game = new Football(“足球“); mc.callPlay(game); 3在题 2 的基础上,若要增加一个新的子类 Tennis,实现扩展功能