Java基础练习题-接口与继承

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

package charactor;

public class Hero {

    public String name;

    protected float hp;

    public static void main(String[] args) {

        ADHero ad = new ADHero();

        Hero h = ad;//子类向父类转换

        AD adi = (AD) h;//父类向子类转换

        APHero ap = (APHero) adi;//出现错误

    }

}

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(); 会调用父类的方法?还是子类的方法?

调用子类的方法

你可能感兴趣的:(java,开发语言)