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过 ...
随机推荐
- 今天带大家了解一下ICMP协议及基本使用
ICMP协议的介绍及基本使用 1.IP数据包头的格式 2.ICMP协议的功能介绍 3.ICMP的基本使用方法 1.在讲解ICMP协议之前,我们先来简单了解一下IP数据包格式如图所示: 2.好现在切入正 ...
- 问题描述:Navicat连不上MySQL数据库
发现Navicat连不上MySQL后我首先觉得是MySQL的服务没有打开, 然后再cmd里面 启动MySQL服务 输入: net start mysql 发现没有此服务,然我网上找了一下 先初始化My ...
- HTML笔记整理--下节
欢迎来到HTML基础笔记下节部分! 内联样式 当特殊的样式需要应用到个别元素时,就可以使用内联样式. 使用内联样式的方法是在相关的标签中使用样式属性.样式属性可以包含任何 CSS 属性.以下实例显示出 ...
- HTTP缓存小结
介绍 提到页面优化,浏览器缓存必定是一个绕不过的话题,判断一个网站的性能最直观的就是看网页打开的速度,而提高网页反应速度的一个方式就是使用缓存.一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟, ...
- 从零开始学mitmproxy抓包工具
Man In The Middle mitm是Man In The Middle的首字母缩写,意思是位于中间的人,表明mitmproxy是一个代理,可以拦截请求,实现网络抓包.知名的网络抓包工具有Fi ...
- C1 能力认证——Web进阶
C1 能力认证--Web进阶 DOM节点操作-上 名称 描述 getElementById() 获取带有指定id的节点 getElementsByTagName() 获取带有指定标签名的节点集合 qu ...
- suse 12 二进制部署 Kubernetets 1.19.7 - 第04章 - 部署docker服务
文章目录 1.4.部署docker 1.4.0.下载docker二进制文件 1.4.1.配置docker镜像加速 1.4.2.配置docker为systemctl管理 1.4.3.启动docker服务 ...
- php spl_autoload_register 实现自动加载
spl_autoload_register (PHP 5 >= 5.1.2, PHP 7) spl_autoload_register - 注册给定的函数作为 __autoload 的实现 语法 ...
- .Net Core Aop之IResourceFilter
一.简介 在.net core 中Filter分为一下六大类: 1.AuthorizeAttribute(权限验证) 2.IResourceFilter(资源缓存) 3.IActionFilter(执 ...
- 转载 CoreCLR源码探索(七) JIT的工作原理(入门篇)
转载自:https://www.cnblogs.com/zkweb/p/7687737.html 很多C#的初学者都会有这么一个疑问, .Net程序代码是如何被机器加载执行的? 最简单的解答是, C# ...