SóProvas


ID
1306453
Banca
CESPE / CEBRASPE
Órgão
ANATEL
Ano
2014
Provas
Disciplina
Programação
Assuntos

No que diz respeito aos conceitos e fundamentos de lógica de programação, julgue o item seguinte.


Em Java, para que uma classe interna possa ser instanciada, é necessário haver uma instância de uma classe externa que possa ser usada para se associar à primeira.

Alternativas
Comentários
  • Você NUNCA poderá ter uma instância de uma classe INTERNA sem que haja uma instância de uma classe EXTERNA.

  • "As classes internas são divididas em:
    - Classe estática aninhada (top-level class)
    - Classe interna comum
    - Classe interna local de método
    - Classe interna anônima
    "

    Exemplo de classe interna:

    1. public class Outer { 
    2.       class Inner { 
    Uma instância de Inner so podera existir a partir de sua classe externa

    1. public class Outer {

    2.  public static void main(String[] args) { 
    3.              Inner i = new Inner(); 
    4. }

    5.     class Inner { 
    6. }

    Para se obter uma instância de uma classe externa deve - se fazer o seguinte:

    1. public class Outer { 
    2.  public staticvoid main(String[] args) { 
    3.          Outer o = new Outer(); 
    4.          Inner i = o.new Inner(); 
    5.       class Inner { 
    6. } "
    fonte: http://javafree.uol.com.br/artigo/6954/Cap-8-Classes-internas.html


  • class Externa {

        static class Interna {

            public int size;

            Interna() {

                System.out.println("Instanciando Classe Interna");

                size = 100;

            }

        }

        Externa() {

            System.out.println("Não Serei Exibido - Classe Externa não é Instanciada ");

        }

        public static void main(String[] args) {

            Interna interna = new Interna();

        }

    }

    Não é necessário haver instância da classe externa, basta declarar a inner class com static.

  • Classes Internas


    Como o próprio nome diz, são classes que são definidas dentro de outra classe. Sendo que elas tem um relacionamento especial com sua classe externa (classe onde ela está definida), em relação as outras classes. Pelo fato de que elas podem acessar os membros privados da classe externa. É estranho, mais é verdade. Por que na verdade o que acontece, implicitamente a classe interna tem uma instância da classe externa.

    Para instanciar um classe interna, é necessário(obrigatório) ter uma intância da classe externa. Em hipótese alguma, pode-se criar uma instância da interna, sem ter uma instancia da externa para associá-la.



    Leia mais em: Aprendendo sobre Classes Internas http://www.devmedia.com.br/aprendendo-sobre-classes-internas/15581#ixzz3QOZGuj5g

  • não é necessário instância da externa. Código do Thiago está correto.

  • Bem, vamos lá: Dois trechos que retirei do site Devmedia que, para mim, justificam a questão como correta!

    Definindo uma OuterClass (classe externa):

    "(...) Onde está nova classe pode ter tudo que, qualquer classe possa ter, como: variáveis de instância, métodos, blocos de inicialização, herança, implementação, etc. Mas, vale ressaltar que ela não pode definir membros estaticos(causará erro de compilação). Já que se isso ocorrer, ela terá que torna-se uma classe estática, deixando de ser uma classe interna comum."

    Instanciação:

    "Para instanciar um classe interna, é necessário(obrigatório) ter uma instância da classe externa. Em hipótese alguma, pode-se criar uma instância da interna, sem ter uma instancia da externa para associá-la. (...)"

    Fonte: http://www.devmedia.com.br/aprendendo-sobre-classes-internas/15581


    Galera, é muito importante  elucubrar sobre as questões. Torna nossos estudos mais dinâmicos e proveitosos. Mas devemos sempre lembrar da importância de citarmos alguma fonte, senão todos se prejudicam com conclusões que podem estar erradas.


  • Inner Classes

    As with instance methods and variables, an inner class is associated with an instance of its enclosing class and has direct access to that object's methods and fields. Also, because an inner class is associated with an instance, it cannot define any static members itself.


    https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

    Retirando o trecho do tutorial Java oficial. Uma classe interna é sempre associada com uma instância e por isso não pode ter membros estáticos.


  • Leia mais em: Aprendendo sobre Classes Internas http://www.devmedia.com.br/aprendendo-sobre-classes-internas/15581#ixzz3wTcoI800


    "Como o próprio nome diz, são classes que são definidas dentro de outra classe. Sendo que elas tem um relacionamento especial com sua classe externa (classe onde ela está definida), em relação as outras classes. Pelo fato de que elas podem acessar os membros privados da classe externa. É estranho, mais é verdade. Por que na verdade o que acontece, implicitamente a classe interna tem uma instância da classe externa."

  • A questão versa sobre aspectos da linguagem de programação JAVA.

    Java é uma linguagem de programação baseada em classes e orientada a objetos. Foi desenvolvida inicialmente pela Sun Microsystems, a qual foi posteriormente adquirida pela Oracle.

    Para responder essa questão, vamos utilizar a documentação oficial do JAVA SE 8 [1].

    Em JAVA, é possível definir uma classe dentro de outra classe. Essa classe é denominada de Classe Aninhada (Nested Classes) [2].

    Por sua vez, as Classes Aninhadas (Nested Classes) são divididas em duas categorias: não estáticas (non-static)  e estáticas (static). As classes aninhadas não estáticas são chamadas de Classes Internas (Inner Classes) [2].

    Conforme documentação da linguagem JAVA, uma classe interna (Inner Class) somente pode existir dentro de uma instância de uma Classe Externa (Outer Class). Ou seja, para instanciar uma classe interna, primeiro, faz-se necessário instanciar a classe externa e a partir daí instanciar a classe interna [1]. 

    Os trechos de código abaixo retirados da documentação oficial da JAVA exemplificam a sistemática acima:

    Figura 1 - Exemplo de Inner Class em Java.



    Fonte: Java SE 8 Documentation [1].

    Logo, a questão está CORRETA.


    Referência:

    [1] Oracle. JAVA SE 8 - Documentation. Disponível em: documentação do JAVA SE 8 no site da Oracle. Acesso em: 4/6/2021.


    Gabarito do Professor: CERTO.