接口(interface)小结

概念:

接口不是类,而是对类实现的一组描述,这些类需要实现接口所描述的形式

 

以Comparable接口为例:

public interface Comparable
{
int compareTo(Object other);
}

在实现类中,必须有:

int compareTo(Employee other)

注意:接口中的所有方法自动属于public.因此,在声明关键字时可以省略public.

 

该接口有个未说明的附加要求:在调用x.compareTo(y)中,该方法必须确实标胶两个对象的内容,并返回结果.当x>y返回正数;x=y返回0;x<y返回负数.

 

现在实现一个对Employee类对于雇员薪水的比较:

class Employee implements Comparable<Employee>
{
public int compareTo(Employee other)
  {
    return Double.compare(salary, other.salary);
  }
  . . .
}

 

 

接口的特性:

在接口中不能存在实例域或静态方法(静态方法在JDK8后允许使用了),但是可以存在常量

(与接口中的方法被自动设置为public一样,接口中的域将被自动设置为public static final)

规范:虽然public/static/final可以使方法或域指代明确,但是出于规范,建议不要写这些关键字,这样可以更加清晰

 

 

默认方法冲突的解决方式:

如果在一个接口中定义了一个方法定义为默认方法,然后又在另一个父类或接口中定义了同样的方法,该如何解决呢?

  • 父类优先:如果父类提供的是具体的方法,另一个接口提供同名且参数相同的方法,则默认(default)方法会被忽略
  • 接口冲突:如果父类提供一个默认的方法,另一个接口提供同名且参数相同的方法,则必须覆盖(override)这个方法解决冲突

注意:千万不要把一个Objcet的方法重新定义为默认

posted @ 2017-04-05 18:16  NOthingAJ  阅读(202)  评论(0编辑  收藏  举报