作者:季沐测试笔记

原文地址https://www.cnblogs.com/testero/p/15201632.html

博客主页https://www.cnblogs.com/testero

1 类名作为形参和返回值

  • 1.1 类名作为方法的形参

    方法的形参是类名,其实需要的是该类的对象

    实际传递的是该对象的【地址值】

  • 1.2 类名作为方法的返回值

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

    实际传递的,也是该对象的【地址值】

  • 示例代码:

    class Cat {
    public void eat() {
    System.out.println("猫吃鱼");
    }
    }
    class CatOperator {
    public void useCat(Cat c) { //Cat c = new Cat();
    c.eat();
    }
    public Cat getCat() {
    Cat c = new Cat();
    return c;
    }
    }
    public class CatDemo {
    public static void main(String[] args) {
    //创建操作类对象,并调用方法
    CatOperator co = new CatOperator();
    Cat c = new Cat();
    co.useCat(c); Cat c2 = co.getCat(); //new Cat()
    c2.eat();
    }
    }

2 抽象类作为形参和返回值

  • 抽象类作为形参和返回值

    • 方法的形参是抽象类名,其实需要的是该抽象类的子类对象
    • 方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
  • 示例代码:

    abstract class Animal {
    public abstract void eat();
    }
    class Cat extends Animal {
    @Override
    public void eat() {
    System.out.println("猫吃鱼");
    }
    }
    class AnimalOperator {
    public void useAnimal(Animal a) { //Animal a = new Cat();
    a.eat();
    }
    public Animal getAnimal() {
    Animal a = new Cat();
    return a;
    }
    }
    public class AnimalDemo {
    public static void main(String[] args) {
    //创建操作类对象,并调用方法
    AnimalOperator ao = new AnimalOperator();
    Animal a = new Cat();
    ao.useAnimal(a); Animal a2 = ao.getAnimal(); //new Cat()
    a2.eat();
    }
    }

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

  • 接口作为形参和返回值

    • 方法的形参是接口名,其实需要的是该接口的实现类对象
    • 方法的返回值是接口名,其实返回的是该接口的实现类对象
  • 示例代码:

    interface Jumpping {
    void jump();
    }
    class JumppingOperator {
    public void useJumpping(Jumpping j) { //Jumpping j = new Cat();
    j.jump();
    }
    public Jumpping getJumpping() {
    Jumpping j = new Cat();
    return j;
    }
    }
    class Cat implements Jumpping {
    @Override
    public void jump() {
    System.out.println("猫可以跳高了");
    }
    }
    public class JumppingDemo {
    public static void main(String[] args) {
    //创建操作类对象,并调用方法
    JumppingOperator jo = new JumppingOperator();
    Jumpping j = new Cat();
    jo.useJumpping(j); Jumpping j2 = jo.getJumpping(); //new Cat()
    j2.jump();
    }
    }

最新文章

  1. springmvc注解事例
  2. Linux命令学习总结:rm命令
  3. serialize和unserialize函数
  4. phonegap + Framework7 之 ios 推送跳转测试
  5. LevelDB(v1.3) 源码阅读之 Arena(内存管理器)
  6. UEdit初始化加载内容偶尔失败,解决
  7. 初学java之触发响应事件举例子
  8. BOOL布尔类型
  9. VS 2010下单元测试
  10. asp.net中Timer定时器在web中无刷新的使用
  11. (转)sql中 in 、not in 、exists、not exists 用法和差别
  12. [LeetCode]题解(python):146-LRU Cache
  13. centos6.5 安装python3.5
  14. linux中Cron定时任务系统命令详解
  15. Testlink插件工具
  16. Python env使用(virtualenv)
  17. ue4 Skeletal Mesh编辑器
  18. 【2013Esri全球用户大会精彩案例】GIS for Philadelphia’s Finest --费城警用GIS
  19. Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局
  20. S老师 打飞机 学习

热门文章

  1. iptables开启后造成本地套接字阻塞的问题
  2. Linux服务器JDK的安装
  3. Android Parsing between JSON and Kotlin Object with Google Gson Library
  4. 如何实现 Android 短视频跨页面的流畅续播?
  5. Python - 执行顺序、执行入口
  6. Git 系列教程(2)- Git 安装
  7. Python - poetry(2)命令介绍
  8. git各种操作:基本操作 and 多人协作 and 冲突解决
  9. 成本降低40%、资源利用率提高20%的 AI 应用产品云原生容器化之路
  10. CentOS8安装ntp实现时间同步