zoukankan      html  css  js  c++  java
  • Java基础00-形参和返回值22

    1. 形参和返回值

    1.1 类名作为形参和返回值

    1.2 抽象类名作为形参和返回值

    代码示例:

    方法的形参是抽象类名

    抽象动物类:
    定义了一个抽象的eat方法

    动物的操作类:
    创建一个useAnimal方法,它的形参是抽象类Animal

    测试类:

    创建操作类对象,并调用方法:
    调用方法时,提示我们需要的是Animal类型的实参。往下看

    在操作类中,看到Animal a 也能调用方法,说明a是一个实例对象。
    但是Animal是一个抽象类,并不能实例化,这里只能使用多态的形式,所以需要的是它的子类对象,创建它的子类对象然后传递过来。
    当子类传递过来时就形成这样:Animal a = new 子类;

    那么就创建一个Animal的子类Cat,并继承它:

    继续写测试类:
    通过多态的形式将创建对象a,然后将a传递给useAnimal方法,
    形成:Animal a = new Cat();
    然后调用eat方法输出“猫吃鱼”

    运行结果:

    方法的返回值是抽象类名

    继续编写操作类:
    这里将void改为Animal,所以返回的是Animal对象,但是Animal对象是抽象类,不能直接实例化。
    所以我们利用多态的形式,返回它的子类。
    Animal a = new Cat();

    • 可以得出结论:

        方法的返回值是抽象类名,其实返回的是该抽象类的子类对象

      

    在测试类中调用:
    ao.getAnimal返回的是Animal的子类对象Cat,
    就形成了:Animal a2 = new Cat();

    运行结果:
    和将抽象类做为新参的结果是一样的。

    1.3 接口名作为形参和返回值

    将接口名作为形参和返回值,其实是和抽象类一样的,
    只不过接口将子类变成了实现类。

  • 相关阅读:
    react hooks子给父传值
    npm安装依赖 and 删除依赖
    react 阻止事件冒泡
    http 500状态码
    vue中插槽slot的使用
    怎样在vue项目中使用axios处理接口请求
    GET 与 POST 其实没有什么区别
    LazyMan
    什么是微服务,什么是分布式
    思索 p5.js 的最佳实践
  • 原文地址:https://www.cnblogs.com/ajing2018/p/14668895.html
Copyright © 2011-2022 走看看