1
0
mirror of https://github.com/adambard/learnxinyminutes-docs.git synced 2025-01-17 21:49:22 +01:00

Merge pull request #1903 from victor-dsc/translating-java

[Java/pt-br]
This commit is contained in:
Adam Bard 2015-10-31 18:32:24 +08:00
commit dde10ab6ef

View File

@ -405,6 +405,219 @@ class Velocipede extends Bicicleta {
}
// Interfaces
// Sintaxe de declaração de Interface
// <nível de acesso> Interface <nome-da-interface> extends <super-interfaces> {
// // Constantes
// // Declarações de método
//}
// Exemplo - Comida:
public interface Comestivel {
public void comer(); // Qualquer classe que implementa essa interface, deve
                        // Implementar este método.
}
public interface Digestivel {
public void digerir();
}
// Agora podemos criar uma classe que implementa ambas as interfaces.
public class Fruta implements Comestivel, Digestivel {
@Override
public void comer() {
// ...
}
@Override
public void digerir() {
// ...
}
}
// Em Java, você pode estender somente uma classe, mas você pode implementar muitas
// Interfaces. Por exemplo:
public class ClasseExemplo extends ExemploClassePai implements InterfaceUm,
InterfaceDois {
@Override
public void InterfaceUmMetodo() {
}
@Override
public void InterfaceDoisMetodo() {
}
}
// Classes abstratas
// Sintaxe de declaração de classe abstrata
// <Nível de acesso> abstract <nome-da-classe-abstrata> extends <estende super-abstratas-classes> {
// // Constantes e variáveis
// // Declarações de método
//}
// Marcar uma classe como abstrata significa que ela contém métodos abstratos que devem
// ser definido em uma classe filha. Semelhante às interfaces, classes abstratas não podem
// ser instanciadas, ao invés disso devem ser extendidas e os métodos abstratos
// definidos. Diferente de interfaces, classes abstratas podem conter uma mistura de
// métodos concretos e abstratos. Métodos em uma interface não podem ter um corpo,
// a menos que o método seja estático, e as variáveis sejam finais, por padrão, ao contrário de um
// classe abstrata. Classes abstratas também PODEM ter o método "main".
public abstract class Animal
{
public abstract void fazerSom();
// Método pode ter um corpo
public void comer()
{
System.out.println("Eu sou um animal e estou comendo.");
//Nota: Nós podemos acessar variáveis privadas aqui.
idade = 30;
}
// Não há necessidade de inicializar, no entanto, em uma interface
    // a variável é implicitamente final e, portanto, tem
    // de ser inicializado.
protected int idade;
public void mostrarIdade()
{
System.out.println(idade);
}
//Classes abstratas podem ter o método main.
public static void main(String[] args)
{
System.out.println("Eu sou abstrata");
}
}
class Cachorro extends Animal
{
// Nota: ainda precisamos substituir os métodos abstratos na
    // classe abstrata
@Override
public void fazerSom()
{
System.out.println("Bark");
// idade = 30; ==> ERRO! idade é privada de Animal
}
// NOTA: Você receberá um erro se usou a
    // anotação Override aqui, uma vez que java não permite
    // sobrescrita de métodos estáticos.
    // O que está acontecendo aqui é chamado de "esconder o método".
    // Vejá também este impressionante SO post: http://stackoverflow.com/questions/16313649/
public static void main(String[] args)
{
Cachorro pluto = new Cachorro();
pluto.fazerSom();
pluto.comer();
pluto.mostrarIdade();
}
}
// Classes Finais
// Sintaxe de declaração de classe final
// <nível de acesso> final <nome-da-classe-final> {
// // Constantes e variáveis
// // Declarações de método
//}
// Classes finais são classes que não podem ser herdadas e são, portanto, um
// filha final. De certa forma, as classes finais são o oposto de classes abstratas
// Porque classes abstratas devem ser estendidas, mas as classes finais não pode ser
// estendidas.
public final class TigreDenteDeSabre extends Animal
{
// Nota: Ainda precisamos substituir os métodos abstratos na
     // classe abstrata.
@Override
public void fazerSom();
{
System.out.println("Roar");
}
}
// Métodos Finais
public abstract class Mamifero()
{
// Sintaxe de Métodos Finais:
// <modificador-de-acesso> final <tipo-de-retorno> <nome-do-método>(<argumentos>)
// Métodos finais, como, classes finais não podem ser substituídas por uma classe filha,
    // e são, portanto, a implementação final do método.
public final boolean EImpulsivo()
{
return true;
}
}
// Tipo Enum
//
// Um tipo enum é um tipo de dado especial que permite a uma variável ser um conjunto de constantes predefinidas. A
// variável deve ser igual a um dos valores que foram previamente definidos para ela.
// Por serem constantes, os nomes dos campos de um tipo de enumeração estão em letras maiúsculas.
// Na linguagem de programação Java, você define um tipo de enumeração usando a palavra-chave enum. Por exemplo, você poderia
// especificar um tipo de enum dias-da-semana como:
public enum Dia {
DOMINGO, SEGUNDA, TERÇA, QUARTA,
QUINTA, SEXTA, SABADO
}
// Nós podemos usar nosso enum Dia assim:
public class EnumTeste {
// Variável Enum
Dia dia;
public EnumTeste(Dia dia) {
this.dia = dia;
}
public void digaComoE() {
switch (dia) {
case SEGUNDA:
System.out.println("Segundas são ruins.");
break;
case SEXTA:
System.out.println("Sextas são melhores.");
break;
case SABADO:
case DOMINGO:
System.out.println("Finais de semana são os melhores.");
break;
default:
System.out.println("Dias no meio da semana são mais ou menos.");
break;
}
}
public static void main(String[] args) {
EnumTeste primeiroDia = new EnumTeste(Dia.SEGUNDA);
primeiroDia.digaComoE(); // => Segundas-feiras são ruins.
EnumTeste terceiroDia = new EnumTeste(Dia.QUARTA);
terceiroDia.digaComoE(); // => Dias no meio da semana são mais ou menos.
}
}
// Tipos Enum são muito mais poderosos do que nós mostramos acima.
// O corpo de um enum pode incluir métodos e outros campos.
// Você pode ver mais em https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
```
## Leitura Recomendada