一、具体类名作为形参与返回值

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

比如有一个具体的猫类,我使用另一个类使用猫类的方法

public class CatOperator {
  public void useCat(Cat c){
      c.eat();
  }
}

那么在调用的时候

public class CatDemo {
  public static void main(String[] args) {
      CatOperator c=new CatOperator();
      //需要创建Cat类的对象,因为useCat方法的形参是Cat类型的参数
      Cat c1=new Cat();
      c.useCat(c1);
  }
}

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

public class CatOperator {
  public void useCat(Cat c){
      c.eat();
  }
  public Cat getCat(){
      //因为返回类型为Cat,则返回值一定为Cat类型
      //创建对象
      Cat c=new Cat();
      return c;
  }
}

那么在调用的时候

public class CatDemo {
  public static void main(String[] args) {
      CatOperator c = new CatOperator();
      Cat c1 = new Cat();
      c.useCat(c1);
      System.out.println("---------------------");
      Cat c2 = c.getCat();//new cat
      c2.eat();
  }
}

二、抽象类名作为形参与返回值

1.方法的形参是抽象类名,实际上需要的是该抽象类的子类对象

public class AnimalOperator {
  //抽象类名作为形参,实际需要的是子类的对象
  public void useAnimal(Animal a){ // Animal a=new Dog()
      a.eat();
  }
public class AnimalDemo {
  public static void main(String[] args) {
      //创建操作类对象
      AnimalOperator a=new AnimalOperator();
      //因为抽象类不能直接实例化需要创建子类使用多态进行处理
      Animal a1=new Dog();
      a.useAnimal(a1);
      }
      }

2.方法的返回值是抽象类名,返回的是该抽象类的子类对象

public class AnimalOperator {
  //抽象类名作为形参,实际需要的是子类的对象
  public void useAnimal(Animal a){ // Animal a=new Dog()
      a.eat();
  }
  public Animal getAnimal(){
      Animal a=new Dog();
      return a;
  }
}
/*测试类
*
* */

public class AnimalDemo {
  public static void main(String[] args) {
      //创建操作类对象
      AnimalOperator a=new AnimalOperator();
      //因为抽象类不能直接实例化需要创建子类使用多态进行处理
      Animal a1=new Dog();
      a.useAnimal(a1);
      System.out.println("----------------------");
      Animal a2=a.getAnimal();
      a2.eat();
  }
}

三、接口名作为形参与返回值

1.方法的形参是接口名,需要的是该接口的实现类对象

2.方法的返回值是接口名,需要的是该接口的实现类对象

/*定义接口
* */
public interface jumpping {
  //定义抽象方法
  void jumpping();
}

/*接口操作类
* */
public class JumppingOperator {
  public void useJumpping(jumpping j){
      j.jumpping();
  }
  public jumpping getJumpping(){
      jumpping j=new Cat();
      return j;
  }

}

public class Cat implements jumpping{
  //重写抽象方法

  @Override
  public void jumpping() {
      System.out.println("毛调高");
  }
}

/*测试类

* */
public class JumppingDemo {
  public static void main(String[] args) {
      //创建操作类对象
      JumppingOperator j=new JumppingOperator();
      //创建子类对象实现接口
      jumpping j1=new Cat();
      j.useJumpping(j1);
      System.out.println("-------------------");
      jumpping j2 = j.getJumpping();
      j2.jumpping();


  }
}

Java基础——引用类型作为形参与返回值的更多相关文章

  1. Java引用类型作为形参和返回值

    一.什么是引用类型 在Java中引用类型包括三种:类.抽象类.接口. 二.引用类型作为形参使用 1.类作为形参 /** * 类作为形参,实际传递的是该类的对象 */ class Student { p ...

  2. Java - 关于基础数据类型的形参和返回值

    1. 当基础数据类型被当作形参时,最好使用其包装类,因为这样可方便调用者传参(基础数据类型亦或是其包装类都可)   2. 当基础数据类型被当作返回值时,最好使用原型,因为这样可以方便调用者接收返回值( ...

  3. [java基础] 遇到的一个关于返回值泛型的问题

    在写代码的时候这样写: import java.util.ArrayList; import java.util.List; public class TestConversion { public ...

  4. 066 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 带参有返回值方法

    066 01 Android 零基础入门 01 Java基础语法 08 Java方法 04 带参有返回值方法 本文知识点:带参有返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...

  5. 065 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 带参无返回值方法

    065 01 Android 零基础入门 01 Java基础语法 08 Java方法 03 带参无返回值方法 本文知识点:带参无返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...

  6. 064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法

    064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法 本文知识点:无参带返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...

  7. 063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法

    063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法 本文知识点:无参无返回值方法 无参无返回值方法 案例 为什么使用方法?--方便复杂问题调用 ...

  8. Java线程:新特征-有返回值的线程

    http://lavasoft.blog.51cto.com/62575/222082/ Java线程:新特征-有返回值的线程 2009-11-04 17:33:56 标签:返回值 职场 线程 休闲 ...

  9. java使用Filter过滤器对Response返回值进行修改

    转:java使用Filter过滤器对Response返回值进行修改 练习时只做了对request 的处理,这里记录一下,filter 对 response的处理. 原文地址:java使用Filter过 ...

随机推荐

  1. nvidia-smi

    内容转自:https://blog.csdn.net/handsome_bear/article/details/80903477 nvidia-smi 显示 说明 Fan 风扇转速(0%--100% ...

  2. Spark——统计文本中单词出现的次数

    示例一:统计所有单词出现的次数 1.在本地创建文件并上传到hdfs中 #vin data.txt //将文件上传到hadoop的根目录下 #hdfs dfs -put data.txt / 2.在sp ...

  3. python篇第10天【For 循环语句】

      实例 #!/usr/bin/python # -*- coding: UTF-8 -*- for a in 'Henry': print "This is ", a   fru ...

  4. OSI七层协议&TCP协议(三次握手四次挥手)

    今日内容 python 基础回顾 软件开发架构 网络理论前戏 OSI 七层协议(五层) TCP协议 三次握手与四次挥手 UDP协议 内容详细 一.python 基础回顾 1.基本数据类型 整型 int ...

  5. Solution -「多校联训」最大面积

    \(\mathcal{Description}\)   Link.   平面上有 \(n\) 个点 \(A_{1..n}\),\(q\) 次询问,每次给出点 \(P\),求 \[\max_{1\le ...

  6. MyBatis功能点二:plugins插件使用

    MyBatis自定义插件使用步骤(已有pojo及mapper的基础上) 一.自定义插件,实现Interceptor接口 二.核心配置文件sqlMapConfig.xml文件增加插件相关内容 测试 测试 ...

  7. ACM对抗赛有感

    2022.2.22 一个有"爱"的日子,注定不会平凡(对于24oier来说),原因是gg让我们参加与大连理工大学的对抗赛. 为此队友都准备好各种板子,上了比赛才发现根本没有 可怜了 ...

  8. Spring的AOP的底层实现原理?

    aop是ioc的一个扩展功能,先有的ioc,再有的aop,只是在ioc的整个流程中新增的一个扩展点而已:BeanPostProcessor 底层实现用的是动态代理 AOP应用场景 场景一: 记录日志 ...

  9. kali linux 安装lanmp遇到的问题

    安装LANMP步骤(需要ROOT权限)2020版本以上的Linux kali需要百度参考修改权限得文章 root@kali:~# wget http://dl.wdlinux.cn/files/lan ...

  10. 【基础概念】匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置

    转载地址 https://www.cnblogs.com/murongxiaopifu/p/4419040.html 0x00 前言: 匹夫在日常和别人交流的时候,常常会发现一旦讨论涉及到" ...