I can't find any good source explaining why:
abstract class AA {
public static void log() {}
}
class BB extends AA {
public void log() {} //error
}
interface CC {
public static void log() {}
}
class DD implements CC {
public void log() {} //Ok
}