Questão nº 57
Questão de Tecnologia da Informação · CESGRANRIO BASA 02/2021 (nº 57)
CESGRANRIO2021Técnico Científico - Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Ever comentário ↓
Qual definição de interface Java NÃO produz erro de
compilação?
- A```java
interface P {
int x;
int y;
public void op1(String x);
}
``` - B```java
abstract interface Q {
public int x;
public int y;
public default void op1() {
System.out.println(x+y);
}
}
``` - C```java
final interface R {
int x=10;
int y=20;
public static void op1() {
System.out.println(x+y);
}
}
``` - D
public interface S { public static int x=10; public static int y=20; public static void op1() { x++; y++; System.out.println(x+y); } } - E```java
public abstract interface T {
static int x=20;
public int y=20;
static void op1() {
System.out.println(x+y);
}
}
``` (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Conceito-chave: Em Java, interfaces são tipos que definem contratos (o que fazer), não implementações (como fazer). Por isso, campos em interfaces são implicitamente public static final (constantes) e métodos sem corpo são implicitamente public abstract. Métodos com corpo só são permitidos se forem default, static ou private.
- (A) Incorreta:
int x;eint y;são campos sem inicialização, mas em interface todo campo éfinal(constante) e precisa ser inicializado na declaração — isso gera erro de compilação. - (B) Incorreta:
public int x;epublic int y;também são campos sem valor inicial — mesmo problema da (A). Além disso,abstract interfaceé redundante, mas não causa erro; o erro real são os campos não inicializados. - (C) Incorreta:
final interfaceé proibido — interfaces são implicitamente abstratas e não podem serfinal(ninguém pode implementar uma interface final). Esse é o distrator mais tentador, pois os campos estão corretos (int x=10;virapublic static final int x=10;), mas a palavrafinalna interface derruba tudo. - (D) Incorreta:
public static void op1()comx++;ey++;tenta modificar camposstatic— mas em interface, campos sãofinal, então não podem ser alterados. Erro de compilação garantido. - (E) Correta:
public abstract interface Té válido (redundante, mas legal). Camposstatic int x=20;epublic int y=20;são implicitamentepublic static finale inicializados. O métodostatic void op1()é permitido (métodostaticem interface pode ter corpo e não é herdado, então não viola o contrato). Tudo compila sem erro.
Fonte: CESGRANRIO BASA 02/2021 Técnico Científico - Tecnologia da Informação. Reproduzida para fins de estudo.