第29节 接口与多态(下)接口回调

本文深入探讨了Java中的接口回调机制,展示了如何通过接口变量调用不同类实现的接口方法,实现多态性。同时,对比了抽象类与接口的区别,并介绍了面向接口编程的核心思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#第29节 接口与多态(下)接口回调
##Java接口回调
接口回调是指可以把 实现某一接口的类创建的对象的引用 赋给 该接口声明的接口变量中,那么该接口变量就可以调用被类重写的接口方法。

示例:创建接口test
Test.java

public interface Test {
	int getSum(int x);
}

Tom 实现这个接口,重写相应的方法 Tom .java

public class Tom implements Test{
	@Override
	public int getSum(int x) {
		int sum = 0;
		for(int i=1;i<=x;i++){
			sum = sum+i;
		}
		return sum;
	}
}

主类Demo27

public class Demo27 {
	public static void main(String[] args) {
		Test test;     //声明一个接口的变量
		Tom tom = new Tom();
		test = tom;
		System.out.println("test的计算结果:"+test.getSum(20));
	}
}

运行结果
在这里插入图片描述

##接口的多态性

把实现接口的类的实例的引用赋值给接口变量后,该接口变量就可以回调类重写的接口方法。

由接口产生的多态就是指不同的类在实现同一个接口时可能具有不同的实现方式,那么接口变量在回调接口方法时就可能具有多种形态。

示例:创建一个Bob实现这个接口Bob.java

public class Bob implements Test{
	@Override
	public int getSum(int x) {
		return 12+x;
	}
}

主类中如何来写它呢?Demo27.java

public class Demo27 {
	public static void main(String[] args) {
		Test test;
		Tom tom = new Tom();
		test = tom;
		System.out.println("test的计算结果:"+test.getSum(20));
		test = new Bob();   //合三为一
		System.out.println("test的计算结果:"+test.getSum(20));
	}
}

和上转型对象实现的多态是非常相似的,这里只是用到了抽象的最高境界接口还实现,显得更加的纯粹,简单
在这里插入图片描述
##Abstract类和接口类的比较

接口和abstract类的比较如下:
1.abstract类和接口都可以有abstract方法。
2.接口中只可以有常量,不能有变量;而abstract类中即可以有常量也可以有变量。
3.abstract类中也可以有非abstract方法,接口不可以。

##面向接口编程

面向接口去设计程序,可以通过在接口中声明若干个abstract方法,表明这些方法的重要性,方法体的内容细节由实现接口的类去完成。

使用接口进行程序设计的核心思想是使用接口回调,即接口变量存放实现该接口的类的对象的引用,从而接口变量就可以回调类实现的接口方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值