Classes

3 respostas
A

Se não colocarmos nada na frente de uma Classe ela será abstrata? Ou o que?

3 Respostas

TerraSkilll

Assim?

class NomeDaClasse{
// etc
}

Será uma classe comum, cuja classe pai é Object. Não será abstrata, muito menos uma Interface ou enum.

Abraço.

Rodrigo_Void

Não colocar o que na frente?
O identificador(class,interface ou enum) é obrigatório. Não vai funcionar sem.
Já o modificador de acesso, (public, private ou protected) é opcional, sendo que se não informado é protected.

lvbarbosa

Quando não informado, o modificador de acesso padrão não é o protected, mas sim o chamado default, ou package private. Não tem como definir esse modificador explicitamente, a única maneira de utiliza-lo é não especificar nenhum outro. O modificador protected não se aplica à classes, mas só a membros de classes (métodos/variáveis). Na prática, nada fora do pacote pode acessar uma classe package private diretamente, só indiretamente através de herança.

Falando de membros:

  • Com protected, qualquer outra classe no mesmo pacote pode acessar aquele membro diretamente. Se for uma classe de outro pacote, pode acessar os membros protected através de herança, caso haja alguma forma de herdar daquela classe (direta ou indiretamente).

  • Com package private, o esquema é um pouco mais restritivo. Diferentemente do protected, no default os membros da classe só são visíveis por outras classes dentro do mesmo pacote, mesmo através de herança.

Situação A) classe package private:

package a;

class X { // package private
}

package b;

import a.X; // erro de compilação, classe não é pública

class Y extends X { // erro de compilação, símbolo X não encontrado
}

Situação B) class public, método package private:

package a;

public class X {

    void foo() {...} // método package private
}

package b;

import a.X; // funciona, X é publico

class Y extends X { // funciona

    void hello() {
        foo(); // erro de compilação, método não é encontrado
    }

}
Criado 20 de fevereiro de 2017
Ultima resposta 20 de fev. de 2017
Respostas 3
Participantes 4