Какая разница между интерфейсами Comparator и Comparable?

Столкнулся недавно с этими двумя интерфейсами, интересны различия.

В интерфейсе Comparable находится метод compareTo, который возвращает отрицательное число если текущий объект меньше и , соответственно, положительное число, если текущий объект больше того, который передаётся через параметр.

В интерфейсе Comparator находится куча разных методов, но как правило используется compare. Этот метод аналогичный первому, только принимает 2 аргумента.

public class MyClass implements Comparable, Comparator {

int value;

public
MyClass(){}
public MyClass(int val){
value = val;
}

@Override
public int compareTo(MyClass o) {
return this.value - o.value;
}
@Override
public int compare(MyClass o1, MyClass o2) {
return o1.value - o2.value;
}
}

public class Main {

public static void main(String[] args) {
MyClass mc =
new MyClass(6);
MyClass mc2 = new MyClass(9);

System.out.println(mc.compareTo(mc2));

MyClass mc3 = new MyClass();
System.out.println(mc3.compare(mc,mc2));
}
}