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 接口名作为形参和返回值

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

  • 相关阅读:
    ArrayList removeRange方法分析
    LinkedHashMap源码分析(基于JDK1.6)
    LinkedList原码分析(基于JDK1.6)
    TreeMap源码分析——深入分析(基于JDK1.6)
    51NOD 2072 装箱问题 背包问题 01 背包 DP 动态规划
    51 NOD 1049 最大子段和 动态规划 模板 板子 DP
    51NOD 1006 最长公共子序列 Lcs 动态规划 DP 模板题 板子
    8月20日 训练日记
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/ajing2018/p/14668895.html
Copyright © 2011-2022 走看看