17_Java中的类作形参和返回值
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(); } }
本文作者:如此而已~~~
本文链接:https://www.cnblogs.com/fragmentary/p/16756741.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步