首页 > 编程语言 >17_Java中的类作形参和返回值

17_Java中的类作形参和返回值

时间:2022-10-05 23:22:07浏览次数:42  
标签:Java 形参 17 void Cat 返回值 new public

Java中的形参和返回值

此处主要说明引用类型,总结下来就是在前面的规则下,做参数和返回值 就看能否自己创建对象

1、能就:传入本身对象,返回本身对象

2、不能就:传入子类(实现类)对象,返回子类(实现类)对象

一、类名作为形参和返回值

1、方法的形参是类名,其实就是要的是该类的对象

2、方法的返回值是类名,其实返回的是该类的对象

3、参考代码:

package com.itheima_01;
/*
猫类
 */
public class Cat {
    public void eat(){
        System.out.println("猫吃老鼠");
    }
}
package com.itheima_01;
/*
猫的操作类
 */
public class CatOperator {

    //类名作为形参,实际上是获得对应类的对象
    public void useCat(Cat c){//Cat 对象作为这个方法的形参
        c.eat();
    }

    //类名作为返回值,实际上就是返回对应的对象
    public Cat getCat(){
        Cat c = new Cat();
        return c;
    }
}
package com.itheima_01;
/*
测试类
 */
public class CatDemo {
    public static void main(String[] args){
        //创建操作类对象,并调用方法
        CatOperator co = new CatOperator();
        Cat c = new Cat();
        co.useCat(c);

        Cat c2 = co.getCat();
        c2.eat();
    }
}

二、抽象类名作为形参和返回值

1、方法的形参是抽象类名,其实需要的是该抽象类型的子类对象

2、方法的返回值是抽象类名,其实返回的是该抽象类的子类对象

3、参考代码:

package com.itheima_02;
/*
定义一个抽象的动物类
 */
public abstract class Animal {

    //抽象的eat()方法
    public abstract void eat();
}
package com.itheima_02;
/*
猫类
 */
public class Cat extends Animal{
    //重写抽象方法
    @Override
    public void eat(){
        System.out.println("猫吃老鼠");
    }
}
package com.itheima_02;
/*
动物类的操作类
 */
public class AnimalOperator {

    //抽象类做形参,其实传入的是该类的子类对象
    public void useAnimal(Animal a){    //Animal a = new Cat();
        //编译看左边,执行看右边
        a.eat();
    }

    //抽象类做返回值,其实就是返回对应 子类的对象值
    public Animal getAnimal(){
        Animal a = new Cat();
        return a;
    }
}
package com.itheima_02;
/*
测试类
 */
public class AnimalDemo {
    public static void main(String[] args){
        //创建操作类对象,并调用方法
        AnimalOperator ao = new AnimalOperator();
        Animal a = new Cat();   //只能通过多态的形式来创建对象
        ao.useAnimal(a); //对于抽象类,由于不能直接创建对象

        /*Cat c = (Cat) ao.getAnimal();   //可以用多态的知识 将返回的父类向下转型
        c.eat();*/

        Animal a2 = ao.getAnimal();
        a2.eat();
    }
}

三、接口名作为形参和返回值

1、方法的形参是接口名,其实需要的是该接口的实现类对象

2、方法的返回值是接口名,其实返回的是该接口的实现类对象

3、参考代码:

package com.itheima_03;
/*
一个跳高接口
 */
public interface Jumpping {
    public abstract void jump();
}
package com.itheima_03;
/*
创建一个类来实现Jumpping接口
 */
public class Dog implements Jumpping{

    @Override
    public void jump(){
        System.out.println("狗可以跳高了");
    }
}
package com.itheima_03;
/*
接口的操作类
 */
public class JumppingOperator {

    //接口类作为形参,就是传入该接口的实现类
    public void useJumpping(Jumpping j){ //Jumpping j = new Dog();
        j.jump();
    }

    //接口类作为返回值,就是返回该接口的 实现类对象值
    public Jumpping getJumpping(){
        Jumpping j = new Dog();
        return j;
    }
}
package com.itheima_03;
/*
测试类
 */
public class JumppingDemo {
    public static void main(String[] args){
        //创建操作类对象,并调用方法
        JumppingOperator ju = new JumppingOperator();
        Jumpping j = new Dog();
        ju.useJumpping(j);

        Jumpping j2= ju.getJumpping();  //返回了new Dog()
        j2.jump();
    }
}

标签:Java,形参,17,void,Cat,返回值,new,public
From: https://www.cnblogs.com/fragmentary/p/16756741.html

相关文章

  • MyBatis的javaType和ofType的区别
      ofType是值映射到list集合中的类型,比如上面的children。当collection进行list集合映射是需要用ofType,也就是一对多的时候使用......
  • 大聪明教你学Java | Spring Boot 使用自定义注解实现防止表单重复提交
    前言这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战表单重复提交是在多用户的Web应用中最常见且带来麻烦最多的一个问题。有很多的应用场景都会遇到......
  • 【Java8新特性】- Lambda表达式
    Java8新特性-Lambda表达式......
  • Java反射详解,学以致用,实战案例(AOP修改参数、Mybatis拦截器实现自动填充)
    持续创作,加速成长!这是我参与「掘金日新计划·10月更文挑战」的第1天,点击查看活动详情作为Java开发者,你认为反射这个知识点重要程度,在你心里是什么样的呢?以前我也只觉......
  • heiamJava16IO流
    JavaI/O流按流的方向分输入输出流I表示intput(输入),是数据从硬盘文件读入到内存的过程,称之输入,负责读。O表示output(输出),是内存程序的数据从内存到写出硬盘文件的过......
  • java之String的一些常用方法
    string--字符串#######equals和==的区别?-equals:是比较两个对象是否一样(比较的内容->属性值)-==:比较两个地址是否一样-java8之前,常量池存放在堆中,java8以......
  • Java在线聊天功能
    封装工具类封装工具类packageutils;importjava.io.IOException;importjava.io.UnsupportedEncodingException;importjava.net.URLEncoder;importorg.apache......
  • 面试+学习+做项目+最全Java视频讲解
    关注公众号:计算机视觉与图形学实战​​Java零基础教程视频(适合Java0基础,Java初学入门)​​​​尚硅谷Java零基础入门教程(含百道Java真题,2万多行Java代码实战)​​​​黑马程......
  • 超详细Java基础-多态
    茫茫人海千千万万,感谢这一秒你看到这里。希望我的能对你的有所帮助!共勉!愿你在未来的日子,保持热爱,奔赴山海!Java基础知识(多态)多态多态就是指程序中定义的引用变量所......
  • java开发环境的安装之IDEA
    一、JDK、JRE、JVM本文编写思路来自于博主狂神说1、定义jdk:JavaDevelopmentKit(Java语言的软件开发工具包)JDK的说明jre:JavaRuntimeEnvironment(java运行环境)JRE......