接口/抽象类名做形参或返回值

本文通过实例详细讲解了接口和抽象类在作为方法入参和返回值时的使用,强调了接口和抽象类的抽象方法必须实现,非抽象方法可选重写。并展示了如何以匿名内部类或实现类的形式实例化接口,以及接口作为方法入参和返回值的调用方式。

学习资料:

参考视频

参考demo


概述:

  1. 接口和抽象类在做入参和返回值时使用方法基本是一致的,接口和抽象类的抽象方法必须实现,但是抽象类的非抽象方法可以不重写;见demo
  2. 接口或抽象类做入参时,调用该方法时需要以匿名内部类的形式或者实现类的形式将其实例化;见例子①
  3. 接口或抽象类做返回值时,需要以匿名内部类形式或实现类形式进行实例化返回;见例子②

实例讲解:

  • 以接口进行讲解,抽象方法的使用方法同接口,见demo,以下也是截取自demo中的代码片段
  • 例子①:接口做入参

接口代码

//以接口  作为入参或返回值
public interface InregerDemo {

    public void param1();

    public Integer param2(Integer var1,String var2);

}

 接口实现类代码

package com.example.demo.Abstract_Interfance.interfanceTest;

public class InregerDemoClass implements InregerDemo {


    @Override
    public void param1() {
        System.out.println("InregerDemo实现类param1  方法");
    }

    @Override
    public Integer param2(Integer var1, String var2) {
        System.out.println("InregerDemo实现类param2  方法 入参为:"+var1+ "---"+ var2+"返回值为 "+(var1+var2.length()));

        return var1+var2.length();
    }
}

 接口入参的方法

//用接口做入参和出参的类
public class InterfanceEntity {
    //用接口做形参
    //这个在调用的时候  也必须实例化这个接口当参数  可以是匿名内部类的形式  也可以是  实现类的形式
    public  void AsParam(InregerDemo id){
        id.param2(1,"ss");
        id.param1();
    }
}

 调用接口入参方法(以匿名内部类的形式或者实现类的形式进行调用)

    public static void main(String[] args) {
        InterfanceEntity entity = new InterfanceEntity();
        //匿名内部类形式 做入参
        System.out.println("===接口做入参,以匿名内部类方式实现======");
        entity.AsParam(new InregerDemo() {
            @Override
            public void param1() {
                System.out.println("param1");
            }

            @Override
            public Integer param2(Integer var1, String var2) {
                System.out.println("param2 var1:"+var1+"var2:"+var2);
                return null;
            }
        });

        System.out.println("===接口做入参,以实现类的方式实现====");
        entity.AsParam(new InregerDemoClass());

    }
  • 例子②:接口做返回值

承接上述的接口和实现类,接口做返回值需要在方法声明时就以匿名内部类或者实现类的形式,进行实例化

接口做返回值

package com.example.demo.Abstract_Interfance.interfanceTest;

//用接口做入参和出参的类
public class InterfanceEntity {


    //用接口做返回值  一定要返回接口的实例
    //以匿名内部类的方式
    public InregerDemo AsReturn1(){
        return new InregerDemo(){
            @Override
            public void param1() {
                System.out.println("接口做返回值  匿名内部类形式  param1");
            }

            @Override
            public Integer param2(Integer var1, String var2) {

                System.out.println("接口做返回值  匿名内部类形式  param2  入参 var1 :"+var1+"=var2:="+var2+"返回值:"+(var1+var2.length()));

                return var1+var2.length();
            }
        };
    }


    //用接口做返回值  以实体类的形式返回
    public InregerDemo AsReturn2(){
        return new InregerDemoClass();
    }
}

 调用该接口做返回值

    public static void main(String[] args) {

        System.out.println("===接口做返回值,以匿名内部类的方式实现===");
        entity.AsReturn1().param1();
        entity.AsReturn1().param2(25,"25");

        System.out.println("===接口做返回值,以实现类的方式实现===");
        entity.AsReturn2().param1();
        entity.AsReturn2().param2(35,"35");


    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PH = 7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值