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

调用子类的方法

  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Java中的接口和抽象类是面向对象编程中的重要概念。接口是一种规范,它定义了一组方法的签名,而不包含方法的实现。抽象类是一种特殊的类,它不能被实例化,只能被继承,并且可以包含抽象方法和具体方法。 在给定的引用中,通过定义接口和抽象类,实现了一个关于运动员和教练的继承关系。Athletes类和Coach类是子类,而Person类是超类,它们都具有姓名和年龄属性。Athletes类和Coach类都包含了抽象方法learn()和teach(),需要在子类中进行重实现。 另外,引用中还给出了一个关于图形的代码示例。通过定义Triangle、Circle和Rectangle类,实现了计算图形面积和周长的功能。这些类之间通过继承和重方法的方式建立了继承关系,并且使用了接口和抽象类的特性。 总结来说,接口和抽象类是Java中实现多态和封装的重要工具,它们可以帮助我们更好地组织和设计代码。通过定义接口和抽象类,我们可以实现代码的重用和扩展性,提高代码的可维护性和可读性。 #### 引用[.reference_title] - *1* *3* [Java练习题——接口和抽象类综合题](https://blog.csdn.net/Alita233_/article/details/126715429)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Java接口练习](https://blog.csdn.net/Sweethonor/article/details/127890323)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值