千锋逆战班,接口习题

在千锋学习的第18天
不积跬步无以至千里,不积小流无以成江河!加油
今天我学习了接口的回调,他是以后经常要是用到的。
这是我对接口的回调的理解
(1)首先我们要写一个接口,约束其内部方法
(2)我们要写一个接口的使用者(工具类),他在自己本身内部调用了接口内定义的方法,但是接口定义的方法是抽象,所以我们调用的其实是实现类的方法,但是实现类不知道是谁,所以我们要创建或者接受一个接口类型的对象(相当于实现类的对象),
(3)当我们调用接口的使用者(工具类)时,我们要先实现接口的实现类
总结:回调是一个双向的调用模式,当我们调用接口的使用者(工具类)的时候,接口的使用者(工具类)内部逻辑代码执行到接口方法处,调用了接口的实现类,而我们调用者不只是写调用而且要写接口的实现类,简单来说,程序员调用一个接口使用者,而接口使用者(可以是另外一个人同时在写)也在调用实现类(实现类是程序员写)。ps:接口的使用者可以和接口实现类同时编写。A调B,B在执行中又调用了A。

下面是案例梳理一下吧

package com.qf.day4.callback;

public class TestStudent {

	public static void main(String[] args) {
		Student[] stu = new Student[]{new Student("tom",18,85.0),
				new Student("tom1",29,82.0),
				new Student("tom2",16,83.0),
				new Student("tom3",17,81.0),
				new Student("tom4",21,99.0)		};

	java.util.Arrays.sort(stu);//调用接口的使用者
	
	for(int i=0;i < stu.length;i++){
		System.out.println(stu[i].name+ "\t" + stu[i].age);
		
	}
}
}

class Student implements Comparable<Student>{//接口的实现类
	
	String name;
	int age;
	double score;
	
	
	public Student(){}
	public Student(String name, int age, double score) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
	}



	@Override
	public int compareTo(Student o) {//接口使用者那边是我们传入的是数组,数组的第i个调用了这个方法,并且传入第i+1,stu[i].compareTo(stu[i+1])
		//定义要怎么排序的规则 正数 this向后 
		
		if(this.age > o.age){
			return 1;
		}
		else if(this.age < o.age){
			
			return -1;
		}
		else{
			return 0;
		}
			
	}
	
	
	
	
	
}

这是java JDK的开发人员二十多年前写的半成品sort,我们需要实现Comparable这个接口,并且附上我们按照什么规则做排序。sort中有对接口的调用

以上的代码是实现类,以及书写排序规则,

大家有什么不懂得欢迎评论留言

发布了9 篇原创文章 · 获赞 0 · 访问量 446

猜你喜欢

转载自blog.csdn.net/weixin_44077166/article/details/104542852
今日推荐