1.设计一个治疗者接口:Healer
该接口声明有方法: heal()
设计一个Support类,代表辅助英雄,继承Hero类,同时实现了Healer这个接口
interface Healer//接口 { void heal(); } class Support extends Hero implements Healer{ public Support(String id, float economy, int kill) { super(id, economy, kill); } @Override public void heal() { System.out.println("治疗"); } } class Hero{ String id; float economy; int kill; public Hero(String id,float economy,int kill) { this.id=id; this.economy=economy; this.kill=kill; } } public class Main { public static void main(String[] args) { // 创建Support对象 Support support = new Support("001", 100.0f, 5); // 调用治疗方法 support.heal(); } }
2.子类与父类的关系(子类一定可以向父类转换,父类要向子类强制转换,两个继承类不可以互相转换)
类与接口
如下转换能否成功?
如果不能,是哪一行会出错?
为什么会出错
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
3.设计一个类MagicPotion 蓝瓶,继承Item, 重写effect方法
并输出 “蓝瓶使用后,可以回魔法”
class MagicPotion extends Item{ @Override public void effect() { System.out.println("蓝瓶使用后,可以回魔法"); } }
4.. 设计一个接口
接口叫做Mortal,其中有一个方法叫做die
2. 实现接口
分别让ADHero,APHero,ADAPHero这三个类,实现Mortal接口,不同的类实现die方法的时候,都打印出不一样的字符串
3. 为Hero类,添加一个方法,在这个方法中调用 m的die方法。
public void kill(Mortal m)
4. 在主方法中
首先实例化出一个Hero对象:盖伦
然后实例化出3个对象,分别是ADHero,APHero,ADAPHero的实例
然后让盖伦 kill 这3个对象
interface Mortal { void die(); } class ADHero extends Hero implements Mortal { public void die() { System.out.println("112"); } } class APHero extends Hero implements Mortal { public void die() { System.out.println("111"); } } class ADAPHero extends Hero implements Mortal { public void die() { System.out.println("110"); } } class Hero { public void kill(Mortal m) { m.die(); } } public class Main { public static void main(String[] args) { // 创建Support对象 // 实例化一个Hero对象: 盖伦 Hero garen = new Hero(); // 实例化3个对象,分别是ADHero, APHero, ADAPHero的实例 ADHero adHero = new ADHero(); APHero apHero = new APHero(); ADAPHero adapHero = new ADAPHero(); // 让盖伦kill这3个对象 garen.kill(adHero); garen.kill(apHero); garen.kill(adapHero); } }
5.
Hero h =new ADHero();
h.battleWin(); //battleWin是一个类方法
h是父类类型的引用
但是指向一个子类对象
h.battleWin(); 会调用父类的方法?还是子类的方法?
调用子类的方法