e。 6 继承 与 多态
6-1 Programming in Java 继承与 多态 Lecture6
淡树 ·继承 >派生子类 >域的继承与隐藏 >方法的继承与覆盖 >this与supper ·多态 ·重载与覆盖 、 类的设计(Isa/HasA,access control) ·包 ·接口
6-2 Programming in Java 提纲 • 继承 ¾派生子类 ¾域的继承与隐藏 ¾方法的继承与覆盖 ¾ this 与 supper • 多态 • 重载与覆盖 • 类的设计(Isa/HasA, access control) • 包 • 接口
·扩展类超类 ·父类/子类 ·单继承/多继承 ·继承层次结构(tree-like/network-like) 关系 ·子类对象是一个父类对象 ·一个父类对象不是一个子类对象 ·使用显式转换可以将一个父类引用转换为一个子类 的引用
6-3 Programming in Java • 扩展类/超类 • 父类 / 子类 • 单继承/多继承 • 继承层次结构(tree-like/network-like) •关系 • 子类对象是 一个父类对象 • 一个父类对象不是一个子类对象 • 使用显式转换可以将一个父类引用转换为一个子类 的引用 Java的继承
示下列一家的径次传 PhoneCard 电话卡 返回 剩余金额 拨打电话 查询余额 返回 继承 继承 None Number PhoneCard 无卡号电话卡 有卡号电话卡 对应电话机型号 Number PhoneCard 卡号、密码、接 入号码、接通 获得电话机型号 登录交换机 继承 继承 继承 继承 IP卡 200卡 电话磁卡 电话卡 失效日期 附加费 使用地域 拨打电话 拨打电话 拨打电话 拨打电话 IP Card 修改密码 magCard IC Card D200Card 返回
6-4 Programming in Java 示例- 继承的层次图 电话卡 剩余金额 拨打电话 查询余额 无卡号电话卡 对应电话机型号 获得电话机型号 有卡号电话卡 卡号、密码、接 入号码、接通 登录交换机 电话卡 拨打电话 电话磁卡 使用地域 拨打电话 IP卡 失效日期 拨打电话 200卡 附加费 拨打电话 修改密码 继承 继承 继承 继承 继承 继承 PhoneCard None_Number_PhoneCard Number_PhoneCard magCard IC_Card IP_Card D200Card 返回 返回 返回
6 abstract class PhoneCard double balance; abstract boolean performDialO; double getBalance() return balance;} abstract class None Number PhoneCard extends PhoneCard String phoneSetType; String getSetType() return phoneSetType; 返回
6-5 Programming in Java abstract class PhoneCard { double balance; abstract boolean performDial(); double getBalance() { return balance; } } Example(1) abstract class None_Number_PhoneCard extends PhoneCard { String phoneSetType; String getSetType() { return phoneSetType; } } 返回
Example(2 6- abstract class Number PhoneCard extends PhoneCard long cardNumber; int password; String connectNumber; boolean connected; boolean performConnection(long cn,int pw) if (cn =cardNumber &pw =password) { connected true; return true; else return false; 返回
6-6 Programming in Java abstract class Number_PhoneCard extends PhoneCard { long cardNumber; int password; String connectNumber; boolean connected; boolean performConnection(long cn,int pw) { if (cn == cardNumber && pw == password) { connected = true; return true; } else return false; } } Example(2) 返回
二Xap② class magCard extends None Number PhoneCard { double balance; String usefulArea; boolean performDialO { if (balance 0.9) { balance -0.9; return true; else return fslase; Q} 返回
6-7 Programming in Java class magCard extends None_Number_PhoneCard { String usefulArea; boolean performDial() { if (balance > 0.9) { balance -= 0.9; return true; } else return fslase; } } Example(3) 返回 double balance;
二Xap② 6- class IC Card extends None Number PhoneCard boolean performDialO) { if (balance 0.5) { balance -0.9; return true; } else return false; 3 3 返回
6-8 Programming in Java class IC_Card extends None_Number_PhoneCard { boolean performDial() { if (balance > 0.5) { balance -= 0.9; return true; } else return false; } } Example(3) 返回
二xamp②(3 class IP Card extends Number PhoneCard Date expireDate; boolean performDialO { if (balance 0.3 &expireDate.after(new Date()) { balance -0.3; return true; else return false; 返回
6-9 Programming in Java class IP_Card extends Number_PhoneCard { Date expireDate; boolean performDial() { if (balance > 0.3 && expireDate.after(new Date())) { balance -= 0.3; return true; } else return false; } } Example(3) 返回
二Xap23 6 class D200 Card extends Number PhoneCard { double balance;//Number PhoneCard double balance; double additoryFee; boolean performDialO if (balance >(0.5+additoryFee)) { balance -=(0.5 additoryFee); return true; else reurn false; } 返回
6-10 Programming in Java class D200_Card extends Number_PhoneCard { double balance; double additoryFee; boolean performDial() { if (balance >(0.5+additoryFee)) { balance -= (0.5 + additoryFee); return true; } else reurn false; } } Example(3) 返回 double balance;//Number_PhoneCard