Java基础——引用类型作为形参与返回值
一、具体类名作为形参与返回值
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基础——引用类型作为形参与返回值的更多相关文章
- Java引用类型作为形参和返回值
一.什么是引用类型 在Java中引用类型包括三种:类.抽象类.接口. 二.引用类型作为形参使用 1.类作为形参 /** * 类作为形参,实际传递的是该类的对象 */ class Student { p ...
- Java - 关于基础数据类型的形参和返回值
1. 当基础数据类型被当作形参时,最好使用其包装类,因为这样可方便调用者传参(基础数据类型亦或是其包装类都可) 2. 当基础数据类型被当作返回值时,最好使用原型,因为这样可以方便调用者接收返回值( ...
- [java基础] 遇到的一个关于返回值泛型的问题
在写代码的时候这样写: import java.util.ArrayList; import java.util.List; public class TestConversion { public ...
- 066 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 带参有返回值方法
066 01 Android 零基础入门 01 Java基础语法 08 Java方法 04 带参有返回值方法 本文知识点:带参有返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...
- 065 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 带参无返回值方法
065 01 Android 零基础入门 01 Java基础语法 08 Java方法 03 带参无返回值方法 本文知识点:带参无返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...
- 064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法
064 01 Android 零基础入门 01 Java基础语法 08 Java方法 02 无参带返回值方法 本文知识点:无参带返回值方法 说明:因为时间紧张,本人写博客过程中只是对知识点的关键步骤进 ...
- 063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法
063 01 Android 零基础入门 01 Java基础语法 08 Java方法 01 无参无返回值方法 本文知识点:无参无返回值方法 无参无返回值方法 案例 为什么使用方法?--方便复杂问题调用 ...
- Java线程:新特征-有返回值的线程
http://lavasoft.blog.51cto.com/62575/222082/ Java线程:新特征-有返回值的线程 2009-11-04 17:33:56 标签:返回值 职场 线程 休闲 ...
- java使用Filter过滤器对Response返回值进行修改
转:java使用Filter过滤器对Response返回值进行修改 练习时只做了对request 的处理,这里记录一下,filter 对 response的处理. 原文地址:java使用Filter过 ...
随机推荐
- nvidia-smi
内容转自:https://blog.csdn.net/handsome_bear/article/details/80903477 nvidia-smi 显示 说明 Fan 风扇转速(0%--100% ...
- Spark——统计文本中单词出现的次数
示例一:统计所有单词出现的次数 1.在本地创建文件并上传到hdfs中 #vin data.txt //将文件上传到hadoop的根目录下 #hdfs dfs -put data.txt / 2.在sp ...
- python篇第10天【For 循环语句】
实例 #!/usr/bin/python # -*- coding: UTF-8 -*- for a in 'Henry': print "This is ", a fru ...
- OSI七层协议&TCP协议(三次握手四次挥手)
今日内容 python 基础回顾 软件开发架构 网络理论前戏 OSI 七层协议(五层) TCP协议 三次握手与四次挥手 UDP协议 内容详细 一.python 基础回顾 1.基本数据类型 整型 int ...
- Solution -「多校联训」最大面积
\(\mathcal{Description}\) Link. 平面上有 \(n\) 个点 \(A_{1..n}\),\(q\) 次询问,每次给出点 \(P\),求 \[\max_{1\le ...
- MyBatis功能点二:plugins插件使用
MyBatis自定义插件使用步骤(已有pojo及mapper的基础上) 一.自定义插件,实现Interceptor接口 二.核心配置文件sqlMapConfig.xml文件增加插件相关内容 测试 测试 ...
- ACM对抗赛有感
2022.2.22 一个有"爱"的日子,注定不会平凡(对于24oier来说),原因是gg让我们参加与大连理工大学的对抗赛. 为此队友都准备好各种板子,上了比赛才发现根本没有 可怜了 ...
- Spring的AOP的底层实现原理?
aop是ioc的一个扩展功能,先有的ioc,再有的aop,只是在ioc的整个流程中新增的一个扩展点而已:BeanPostProcessor 底层实现用的是动态代理 AOP应用场景 场景一: 记录日志 ...
- kali linux 安装lanmp遇到的问题
安装LANMP步骤(需要ROOT权限)2020版本以上的Linux kali需要百度参考修改权限得文章 root@kali:~# wget http://dl.wdlinux.cn/files/lan ...
- 【基础概念】匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置
转载地址 https://www.cnblogs.com/murongxiaopifu/p/4419040.html 0x00 前言: 匹夫在日常和别人交流的时候,常常会发现一旦讨论涉及到" ...