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

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. 2.k8s的架构

    之前了解了k8s到底是什么,接下来看看k8s的组成. 一.Kubernetes架构 学习k8s,最终目的是为了部署应用,部署一个完整的k8s, 就要知道k8s的组成.k8s主要包含两大部分: 中间包含 ...

  2. TCP的报文详细解读

    这张图好像挺有名的,其实一开始我看见的时候是一脸懵逼的,但是通过翻书(大学时代最害怕的计算机网络),查阅他人博客等等办法,最后终于有了一个系统的了解,当然,这里知识点多而杂,大家可以多看几遍,结合上面 ...

  3. pyrealsense2学习

    如何得到realsense设备信息 前提:将D455连接在电脑上,并且已经下载好 Realsense Viewer 打开Realsense Viewer--> Info, 便可得到相机的一些参数 ...

  4. Scala变量和数据类型

    一.注释及代码规范 Scala的注释和Java中完全相同:单行注释:// .多行注释:/* */ 以及文档注释:/**   */: 使用tab操作,实现缩进,默认整体向右边移动,用shift+tab整 ...

  5. Elasticsearch使用系列-基本查询和聚合查询+sql插件

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...

  6. HashTable源码学习

    一.介绍 1.HashMap和HashTable的区别 1.相同点 二者都实现了Map接口. 底层都是哈西表 2.不同点 Hashtable继承自Dictionary类,而HashMap继承自Abst ...

  7. 一文了解如何源码编译Rainbond基础组件

    Rainbond 主要由以下三个项目组成,参考官网详细 技术架构 业务端 Rainbond-UI 和 Rainbond-Console 合起来构成了业务层.业务层是前后端分离模式.UI是业务层的前端代 ...

  8. JSP中引入JQuery和Layer,浏览器控制台报错404

    路径没有写错,文件也存在为什么会报404呢?,解决方法是将layer文件夹使用source的方式 解决办法: 这时候你会发现layer文件夹变成了蓝色,重启一次服务器,页面中就没有报404异常了 总结 ...

  9. Django视图与模板(6)

    前面记到数据库与模型(models)有联系,现在记录一下视图与模板,他们两个也有联系. 个人理解:视图就好像一个cpu,比较核心,就是用来处理问题的,又叫业务逻辑处理,他把处理完的结果插入到模板里面, ...

  10. 软件性能测试分析与调优实践之路-Java应用程序的性能分析与调优-手稿节选

    Java编程语言自从诞生起,就成为了一门非常流行的编程语言,覆盖了互联网.安卓应用.后端应用.大数据等很多技术领域,因此Java应用程序的性能分析和调优也是一门非常重要的课题.Java应用程序的性能直 ...