目录
一、实验目的
二、实验内容
三、实验小结
一、实验目的
- 了解接口的作用
- 掌握接口的定义与实现
- 掌握接口的回调
二、实验内容
1. 定义一个接口Human,其中有一无参的、返回类型为void的方法speak();定义类Student实现接口,输出学生姓名、学号、学校、专业、兴趣等信息;定义类Worker实现接口,输出工人姓名、工作单位、职务和兴趣信息;主类中定义接口变量,赋值,运用接口回调类中的方法来输出数据。
源代码:
实验运行截图:
2.评价成绩
体操比赛计算选手成绩的办法是去掉一个最高分和最低分后再计算平均分,而学校考察一个班级的某科目的考试情况时,是计算全班同学的平均成绩。编写能够满足如下条件的程序:
(1)定义一个接口Compute,包含计算平均值的抽象方法。
(2)定义一个类Gymnastics实现上述接口的用于计算体操比赛选手成绩的类。
(3)定义一个类School实现上述接口的用于计算班级平均成绩的类。
(4)在主类中通过接口回调分别计算并输出体操选手最后得分和班级考试平均分数。要求打分通过键盘输入,结果输出占6列,前者右对齐,保留三位小数,后者左对齐,保留两位小数。
源代码:
实验运行截图:
3. 小狗在不同环境条件下可能呈现不同的状态表现,如 "听主人的命令"、"嬉戏"、"晃动尾巴,表示欢迎"、"狂叫,并冲上去狠咬敌人"等,要求用接口封装小狗的状态。具体要求如下。
(1)编写一个接口DogState,其中有一个showState()方法,用来呈现小狗的状态。
(2)编写若干个实现DogState接口的类,负责刻画小狗不同的状态。
(3)编写一个Dog类,类中封装接口变量dogState,定义变量的seter方法,类中定义show()方法用接口回调showState()显示对象的状态。
(4)编写主类,测试小狗的不同状态。要求用匿名类对象显示小狗的"嬉戏"状态。
源代码:
实验运行截图:
三、实验小结
1、接口跟抽象类有很多类似的功能机制。虽然java不支持类多继承、但通过接口子类可以实现多继承的功能。
2、接口由常量(public final 类型 变量=value,定义时必须初始化、中间不允许修改)和方法(abstract方法、default方法、static方法、private方法)构成;不管是在抽象类还是在类实现接口中,abstract 方法必须被重写。其中static类方法、private私有方法不能被实现接口的类对象直接访问。
3、接口中的常量可以通过“接口名、实现接口的类名、类的对象”直接访问而static类方法只能通过接口名调用;private私有方法通常与default默认实例方法配合使用即在默认实例方法体中间接调用private私有方法。
4、接口实现的方式有两种,分别是:
4.1类实现接口
Class 类名 extends 父类 implements 接口,.....
4.2lambda 表达式实现接口
接口类型 变量=(形参)->{函数体};
5、将接口实现的类所创建的对象的引用(地址)赋值给接口类型变量,然后通过接口变量间接调用类中重写接口的抽象方法即为接口回调。
6、接口的多态实现机制就是多个类实现同一个接口并各自重写接口中的抽象方法,然后通过接口类型变量回调这些类中重写接口的方法机制就是接口的多态、跟抽象类的多态实现机制相似。
7、我们们可以单独定义个类、类中包含有接口类型变量和方法,来专门实现接口的回调。这样既体现了面向接口的编程思想同时也遵守了程序设计“扩展开放、修改关闭”的原则。
@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!