接口、多态练习题

输出下面程序结果:

interface A{}

class B implements A
{
    public String func()
    {
        return "func";
    }
}
class Demo
{
    public static void main(String[] args)
    {
        A  a = new B();
        System.out.println(a.func());
    }
}

运行结果:The method func() is undefined for the type A
分析:A a = new B();实现了多态,此时父类的引用指向子类的对象,
相当于:

动物 a=new 狗();//这就为向上转型 a.发声(); // 对象a可以使用动物中的发声()或其他方法,但不可以调用狗的方法。 A a
= new A();实例化一个父类的对象a 动物 a=new 狗();狗b=(狗)a;//这里是向下转型 这时b可调用动物类未被重写的方法和狗类所有方法(包括重写动物类的方法)

当调用a.func()时,不能调用b中的方法,由于A中没有此方法,所以找不到(The method func() is undefined for the type A)

解决办法:
在接口中添加func();声明

interface A{
    public String func();
    }

或者把B向下转型

        A  a = new B();
        B b = (B) a;//向下转型
        System.out.println(b.func());

类似的有

public class Demo10_3 {
    static AA get()
    {
        return new BB();
    }
    public static void main(String[] args)
    {
        AA a=get();  //new B();
        //BB bb=(BB)a;
        System.out.println(a.test());
        //System.out.println(bb.test());
    }
}
interface AA{
    //public String test();
    }
class BB implements AA
{
    public String test()
    {
        return "yes";
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python多练习题可以通过定义一个基类和不同的子类来实现多性。在这个练习题中,一个基类Basse被定义,它具有Think、Eat和Sleep三个方法。然后定义了三个子类Person、Horse和Cat,它们分别继承自基类Basse,并且重写了Think、Eat和Sleep方法。最后定义了一个行为类Action,它的构造函数接受一个对象作为参数,并通过调用该对象的方法来实现多性。 在这个练习题中,我们创建了一个Person对象Per、一个Horse对象Hor和一个Cat对象C,并且将它们分别传递给Action类的构造函数。然后我们通过调用Action对象的Think、Eat和Sleep方法来展示多性的应用。例如,per.Eat()调用了Per对象的Eat方法,而hor.Sleep()调用了Hor对象的Sleep方法。 通过这个练习题,我们可以看到不同的对象通过继承和重写基类方法来实现了相同的动作,从而展现了多性的特点。它使得我们可以使用统一的接口来处理不同的对象,并且根据对象的类型来调用相应的方法。这样可以提高代码的灵活性和可扩展性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Python关于多的练习](https://blog.csdn.net/weixin_46601559/article/details/121285969)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值