a) Toda valor declarado em uma interface é uma constante.
Ambas as declarações tem o mesmo resultado.
public interface X {
public static final int I = 10;
int I = 10;
}
b) Como dito acima são constantes.
c) A variável da classe pode ser pública, privada, protegida, estática, final, transient e volatile. A da interface SEMPRE será pública estática e final.
d) Geralmente as várias de classe são declaradas privadas e possuem os metodos get e set para alterar seu valor.
public class A {
private int i = 10;
// getters and setters
}
public interface B {
int i = 20;
}
public class C extends A implements B {
void print() {
System.out.println("A: " + this.getI()); // Ou this.i caso mude para protected ou public
System.out.println("B: " + C.i); // Ou B.i
}
}
Não li todas as respostas, então algo semelhante já pode ter sido postado.