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过 ...
随机推荐
- Python--变量和简单数据类型
Python--变量和简单数据类型 目录 Python--变量和简单数据类型 一.Python脚本运行过程 二.变量 1. 变量的命名和使用 2. Python关键字和内置函数 2.1 Python关 ...
- logback1.3.x配置详解与实践
前提 当前(2022-02前后)日志框架logback的最新版本1.3.0已经更新到1.3.0-alpha14版本,此版本为非stable版本,相对于最新稳定版1.2.10来说,虽然slf4j-api ...
- YOLOv5模型训练及检测
一.为什么使用YOLOv5 二.软件工具 2.1 Anaconda https://www.anaconda.com/products/individual 2.2 PyCharm https://w ...
- Kubernets-初见
只是入门文档. 使用 linux 通过 java -jar 方式部署单体架构,war 包丢tomcat. 使用 Docker部署微服务架构. 使用 K8s Pod 进行部署 一个一个 服务 命令 je ...
- .NET 固定时间窗口算法实现(无锁线程安全)
一.前言 最近有一个生成 APM TraceId 的需求,公司的APM系统的 TraceId 的格式为:APM AgentId+毫秒级时间戳+自增数字,根据此规则生成的 Id 可以保证全局唯一(有 N ...
- NFS共享Nginx网页根目录(自动部署)
IP HOSTNAME SERVICE SYSTEM 192.168.131.132 proxy-nfs nginx+nfs-server CentOS 7.6 192.168.131.131 ngi ...
- SpringBoot外部配置属性注入
一.命令行参数配置 Spring Boot可以是基于jar包运行的,打成jar包的程序可以直接通过下面命令运行: java -jar xx.jar 那么就可以通过命令行改变相关配置参数.例如默认tom ...
- 深入剖析CVE-2021-40444-Cabless利用链
背景 CVE-2021-40444为微软MHTML远程命令执行漏洞,攻击者可通过传播Microsoft Office文档,诱导目标点击文档从而在目标机器上执行任意代码.该漏洞最初的利用思路是使用下载c ...
- HTTP攻击与防范-命令注入攻击
实验目的 1.了解命令注入攻击攻击带来的危险性. 2.掌握命令注入攻击攻击的原理与方法 3.掌握防范攻击的方法 实验原理 1.了解命令注入攻击攻击攻击带来的危险性. 2.掌握命令注入攻击攻击攻击的原理 ...
- mybatis和spring的xml基本配置
mybatis 导入依赖环境 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybat ...