Questão de exame: mais Interfaces!

7 respostas
M

..então, mais uma galera! quem se arrisca? hehehehe.. lembrando q não vale ir pro code inspector do Eclipse e nem javac... hehehehea

package com.foo;

class FooClass implements InterfaceF { 	
	
   public FooClass() 
   {
      System.out.println( x );
      System.out.println( InterfaceF.CONST );
		
      x = 2;
		
      System.out.println( x );
   }
	
   static public void main( String[] args )
   {
      new FooClass();
   }		

}

interface InterfaceF {

   int x = 0;
	
   public static final int CONST = 10; 

}

7 Respostas

F

Fala !!

vc naum pôs o enunciado… :cry:

mas pelo que vi, nem compila, pq a “variavel” que foi declarada na Interface sempre será pública, estática e final , portanto naum pode-se atribuir um valor a ela, como é feito na classe …

tô certo ? ou tô errado ? :banana: :banana: :banana: :banana:

M

graaande FabioAzul… ehheheeh, é isso ai cara… ah, o enunciado é sempre o mesmo, ai nem coloquei… ou seja… saber oq se passa no código :slight_smile:

P

Uma dúvida, nas interfaces eu so deve sobrescrever os metodos? No caso desses atributos x e CONST eu não deveria ter que sobescrever na classe que implementa esta interface? Qualquer atributo em uma inteface é constante mesmo não usando final???

Todas os atributos, metodos e classes que usam o modifier default são públicos?
exemplo:

class x{ int y; void x(); }

Nesse exemplo todos os itens são públicos?

M

1. sim tu só implementa os métodos!
2. Não precisa declarar as variaveis de novo, elas são herdadas no momento em q tu implementa a interface..
3. qualquer atributo na interface é implicitamente public static final, ou seja, essas linhas fazem a mesma coisa, declaram public static final int x:

int x;
final int x;
static int x;
static final int x;
public int x;
public final int x;
public static int x;
public static final int x;

4. Não! o modificador default é diferente do public, ele só só da visibilidade para as classes q estão no mesmo pacote, sem exceções, exemplo de código válido:

public class A {

  int x;

}

class B {

   B() {
      
      A a = new A();

      a.x = 5;
   }

}

exemplo de código inválido:

package aaa;

public class A {

  int x;

}
package bbb;

import aaa;

public class B {

   B() {
      
      A a = new A();

      a.x = 5;
   }

}
P

Ahhhhhhhhhhh, veja se eu entendi:

Todo atributo dentro de uma interface é uma constante, caso não seja inicializado na interface (durante a contrução do atributo), ele tera o valor default do tipo (int = 0, Integer = null), ou também pode ser inicializado no construtor da classe que implementa a interface, assim como constantes dentro de um classe?

interface XYA{ public static final x = 5; }

Modifiers default são como protecteds?

M

isso ai… bem, sobre protected e acesso padrão, eles tem diferenças sim… o acesso protected é quase igual ao acesso padrão, a diferença é q com protected, uma classe q extends outra classe com o atributo protected, o herda… com acesso padrão, o unico código q tem acesso ao atributo, é aquele q pertence ao mesmo package… :smiley:

R

Apenas complementando…

phst escreveu

Variáveis de instância finais não recebem valor default e devem ser inicializadas até a conclusão do construtor da classe. Como interfaces não têm construtor, suas variáveis de instância devem ser inicializadas no momento da declaração ou o compilador irá reclamar :wink:

Criado 30 de maio de 2004
Ultima resposta 28 de jan. de 2005
Respostas 7
Participantes 4