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过 ...
随机推荐
- MHA高可用配置及故障切换
MHA高可用配置及故障切换 目录 MHA高可用配置及故障切换 一.案例概述 二.案例前置知识点 1. MHA概述 2. MHA的组成 (1)MHA Manager(管理节点) (2)MHA Node( ...
- 【CF1194F】Crossword Expert(数学 期望)
题目链接 大意 给你\(N\)个事件,解决每个事件所需的时间有\(1/2\)的概率为\(t[i]\),\(1/2\)的概率为\((t[i]+1)\),给你总时间\(T\),在\(T\)时间内按顺序解决 ...
- JavaWeb项目根路径问题
jsp中获取项目根路径: 方法① 最顶部增加代码: <% String path = request.getContextPath(); String basePath = request.ge ...
- 4、网络并发编程--僵尸进程、孤儿进程、守护进程、互斥锁、消息队列、IPC机制、生产者消费者模型、线程理论与实操
昨日内容回顾 操作系统发展史 1.穿孔卡片 CPU利用率极低 2.联机批处理系统 CPU效率有所提升 3.脱机批处理系统 CPU效率极大提升(现代计算机雏形) 多道技术(单核CPU) 串行:多个任务依 ...
- 我来教你如何用Docker部署最近火爆的人生重开模拟器
文章目录 获取项目源码包 Dockerfile 构建docker镜像 启动docerk容器 访问liferestart 如果人生可以重来... <可惜没如果> github项目地址:htt ...
- Zookeeper应用之一:数据发布与订阅初体验
Zookeeper到底是什么?可以从Zookeeper提供的功能来理解.本篇小作文就是使用其提供的功能之一:数据发布与订阅. 需求:服务端开启多个实例提供服务,客户端使用服务.如果服务端某个服务下线或 ...
- pytest(12)-Allure常用特性allure.attach、allure.step、fixture、environment、categories
上一篇文章pytest Allure生成测试报告我们学习了Allure中的一些特性,接下来继续学习其他常用的特性. allure.attach allure.attach用于在测试报告中添加附件,补充 ...
- Windows禁用445端口
今天来公司有好多电脑感染了0day病毒, 写个脚本,一键执行禁用445,135-139端口.Windows7测试没有问题. reg add "HKEY_LOCAL_MACHINE\SYSTE ...
- Vue3学习(十五)之 级联选择组件Cascader的使用
写在前面 好像又过去了一周,依旧是什么也没产出,不是懒,而是心情不好,什么也不想干,失眠是常事. 应该是从今年开始,突然感觉博客园就像是我自己的日记一样,承载着自己的喜怒哀乐和酸甜苦辣咸,当然,尴尬的 ...
- DoS泛洪测试与防御
实验目的 DoS泛洪测试与防御 实验内容 DoS泛洪测试与防御 实验环境描述 1. 学生机与实验室网络直连: 2. VPC1与实验室网络直连: 3. 学生机与VPC1物理链路连通: 实验步骤 学生登录 ...