已知接口Comparator,内部定义了max函数,用于返回两个整数中的最大值。请定义该接口的实现类,使得main方法中的比较逻辑可以正确执行,要求实现类的名称为ComparatorImpl。
mport java.util.Scanner;
public class Main {
public static void main(String[] args) {
Comparator comparator =new ComparatorImpl();//向上转型,ComparatorImpl类的对象可以使用到接口的方法。不用向上转型直接实例化对象也可以。
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) { // 注意 while 处理多个 case
int x = in.nextInt();
int y = in.nextInt();
comparatorImpl.getX();
comparatorImpl.getY();
System.out.println(comparator.max(x,y));
}
}
}
interface Comparator{
int max(int x,int y);//创建抽象方法,省略了public abstract
}
//实现接口
class ComparatorImpl implements Comparator{
private int y;
public int getX(){
return x;
}
public void setX(int x){
this.x=x;
}
public int getY(){
return y;
}
public void setY(int y){
this.y=y;
}
//重写抽象方法
public int max(int x,int y){
return Math.max(x,y);
}
}
接下来总结一下接口和抽象类的区别:
共性:不断的抽取,抽取出抽象的概念
区别01:与类的关系
类与接口是实现关系,而且是多实现,一个类可以实现多个接口,而类与抽象类是继承关系,Java中的继承是单一继承,一个类只能有一个父类,但可以多层继承。
区别02:成员
成员变量:抽象类可以有成员变量,也可以有常量,而接口只能有常量。
成员方法:抽象类可以有抽象方法,可以有非抽象方法,接口只能有抽象方法,而且方法有默认修饰符public abstract
构造方法:抽象类有构造方法,而接口没有构造方法。