Você está na página 1de 63

AULA DE JAVA 1 - CONCEITOS BSICOS

DAS 5316 Integrao de Sistemas Corporativos

Roque Oliveira Bezerra, M. Eng


roque@das.ufsc.br

Prof. Ricardo J. Rabelo


ROTEIRO
Introduo
Fases de um programa Java
Strings
Entrada e Sada
Arrays
Classes
Atributos
Mtodos

Construtores

Herana

Packages
Interfaces 2
JAVA
Java um ambiente de execuo completo, no apenas
a linguagem de programao.

Programas Java so compilados para bytecode, ou seja,


um cdigo assembly independente de arquitetura;

O bytecode interpretado na Java Virtual Machine


(JVM);

Compilao JIT (Just in Time)


A medida que a JVM detecta que um trecho de cdigo ser executado
diversas vezes, este convertido, e passa a executar na CPU real. 3
FASES DE UM PROGRAMA JAVA
Edio

package br.ufsc.gsigma;

class Program
{
public static void ma
Editor {
System.out.printl Disco
}
}

4
FASES DE UM PROGRAMA JAVA
Compilao
bytecode
1110010100101010101010100
1001010010101001010101001
0101101101010111001010010
Compilador 1010101010100100101001010
1001010101001010110110101
0111001010010101010101010
0100101001010100101010100
package br.ufsc.gsigma; 1010110110101011110010100
1010101010101001001010010
class Program 1010010101010010101101101
{ 0101111001010010101010101
public static void ma 0100100101001010100101010
{ 1001010111010101111001010
System.out.printl 0101010101010100100101001
} 0101001010101001010110110
} 1010110010100101010010101

Bibliotecas 0100101011101010111100101
0010101010101010010010100

Disco

5
javac <nome do arquivo>.java
FASES DE UM PROGRAMA JAVA
Carregamento
1110010100101010101010100
1001010010101001010101001
0101101101010111001010010 JVM
1010101010100100101001010
1001010101001010110110101
0111001010010101010101010
0100101001010100101010100
1010110110101011110010100
Carregador
1010101010101001001010010
1010010101010010101101101
0101111001010010101010101
-
0100100101001010100101010
1001010111010101111001010
0101010101010100100101001
Verificador
0101001010101001010110110
1010110010100101010010101
0100101011101010111100101

...
0010101010101010010010100

Memria
Disco Bibliotecas

java <nome da classe> 6


FASES DE UM PROGRAMA JAVA
Interpretao

JVM
Interpretador
-
Compilador JIT
...
Memria

7
UM EXEMPLO SIMPLES
public class Exemplo
{
public static void main(String[] args)
{
System.out.println("Al, mundo");
}
}

8
UM EXEMPLO SIMPLES
public class Exemplo
{
class: Indica a declarao de uma classe.
public static void main(String[] args)
Tudo em Java deve ficar dentro de uma
{ classe, no existem variveis ou funes
globais
System.out.println("Al, mundo");
}
}

9
UM EXEMPLO SIMPLES
public class Exemplo
{
public static void main(String[] args)
{
System.out.println("Al, mundo");
public static void main(String[] args)
}
Mtodo main, ponto de entrada do programa
}

10
UM EXEMPLO SIMPLES
public class Exemplo
{
public static void main(String[] args)
{
System.out.println("Al, mundo");
} Chamada de mtodo
}
Chamadas de mtodos so feitas seguindo a forma:

<objeto>.<mtodo>(<parmetros>)

Neste caso, o objeto System.out, o mtodo


println, e o parmetro a string "Al, mundo" 11
COMENTRIOS
Java suporta trs tipos de comentrio:
De linha (//)
System.out.println("Al, mundo"); //Que funo legal...

De bloco (/* ... */)


/* Esse comando serve pra fazer isso,
depois de chamado, vai acontecer aquilo */

De documentao (/** ... */)


/**
Esse mtodo calcula xyz, baseado em abc
@param abc o abc usado no clculo
*/
public void metodoX(int abc) { ... } 12
TIPOS DE DADOS
Inteiros
byte 1 byte, 128 a 127
short 2 bytes, 32.768 a 32.767
int 4 bytes, 2.147.483.648 a 2.147.483.647
long 8 bytes, 9.223.372.036.854.775.808 a 9.223.372.036.854.775.807

Ponto Flutuante
float 4 bytes, ~ 3.40282347E+38
double 8 bytes, ~ 1.79769313486231570E+308

Caracter
char 2 bytes, '\u0000' a '\uffff'

Booleano
boolean true ou false
13
VARIVEIS
Todas as variveis precisam ter um tipo associado
Variveis so declaradas indicando primeiramente o tipo, e em
seguida o nome
Pode-se opcionalmente inicializar uma varivel durante sua
declarao
Usar uma varivel antes de atribuir um valor a ela um erro de
programao (Null Pointer Exception)

int diasDeFolga = 30;


boolean completo;

completo = false;

14
STRINGS
Strings so seqncias de caracteres
Java no possui um tipo primitivo especfico para
representar strings, em vez disso elas so encapsuladas
pela classe String
At mesmo strings literais (delimitadas por aspas), so
instncias da classe String
Strings podem ser criadas a partir de literais, ou pela
concatenao de strings com outras variveis
String str = "Al";
int x = 30;
String str2 = str + " " + x;

//str2 == "Al 30" 15


COMPARANDO STRINGS
Para comparar a igualdade de duas strings deve-se usar
o mtodo equals:
if ( str.equals("Al") ) ...

if ( "Al".equals(str) ) ...

Caso se queira comparar strings sem levar em conta a


diferena entre maisculas e minsculas, pode-se usar o
mtodo equalsIgnoreCase:
if ( str. equalsIgnoreCase("Al") )
...

NO se deve comparar strings com ==


16
CONVERSO DE STRINGS
Para converter tipos simples para string existe o mtodo
valueOf(), da classe String:
String str1 = String.valueOf(23);
String str2 = String.valueOf(50.75);

Para a converso de strings para tipos simples tambm


existem mtodos:
int x = Integer.parseInt("42");
float f = Float.parseFloat("3.14159");

Se a converso no for possvel, uma exceo


lanada.
17
STRING: ALGUNS MTODOS
int length()
Comprimento da string

char charAt(int index)


Retorna o caracter na posio requerida

int indexOf(String str)


Retorna a posio onde str fica na string, ou -1 se no encontrar

String substring(int beginIndex, int endIndex)


Cria uma substring, com os caracteres contidos entre beginIndex e endIndex

int compareTo(String other)


Compara com outra string, e retorna 0 se forem iguais, -1 e esta for menor que a
outra, ou 1 em caso contrrio
18
ENTRADA E SADA
A leitura e a escrita de dados com o usurio
feita, respectivamente, pelos objetos:
System.in
System.out

Os principais mtodos de System.out so


print(...)
Imprime o contedo de uma varivel ou expresso
println(...)
Imprime o contedo de uma varivel ou expresso, e uma
quebra de linha 19
ENTRADA E SADA
A partir da verso 5.0 (1.5), Java prov a classe
java.util.Scanner para leitura de dados de System.in
import java.util.Scanner;

public class InputTest


{
public static void main(String[] args)
{
Scanner entrada = new Scanner(System.in);

System.out.print("Qual seu nome? ");


String nome = entrada.nextLine();

System.out.print("Quantos anos voc tem? ");


int idade = entrada.nextInt();

System.out.println("Ol, " + nome + ". Sua idade : " + idade);


}
} 20
ARRAYS
Arrays so estruturas de dados que armazenam uma seqncia de
tamanho fixo de valores de um mesmo tipo.

int[] numeros; //array de int

String[] nomes; //array de String

Assim como qualquer varivel, arrays precisam ser inicializados


antes de serem usados, e isso feito:
Usando o operador new, e o tamanho desejado
Fornecendo os valores diretamente

String[] nomes = new String[1024];


int[] numeros;
numeros = new int[100];
char[] abc = { 'a', 'b', 'c' };
21
ARRAYS, ACESSANDO ELEMENTOS
Aps a inicializao, valores podem ser atribudos a ndices do array
ou pode-se ler o valor atribudo a um ndice

ndices comeam em 0

O tamanho de um array sempre pode ser obtido pelo atributo (de


apenas leitura) length

nomes[0] = "Arthur";
nomes[1] = "Ford";

int tamanho = nomes.length;

String ultimo = nomes[nomes.length-1];


22
ITERANDO SOBRE ARRAYS
Pode-se iterar sobre arrays de duas formas
Acessando os elementos por seus ndices
String[] array = ...;

for (int i = 0; i<array.length; i++)


{
String str = array[i];
//Usa str
}

Navegando diretamente pelos elementos


for (String str : array)
{
//Usa str
} 23
ARRAYS MULTIDIMENSIONAIS
Java no possui uma construo explcita para arrays
multidimensionais.

Porm, permitido criar arrays de arrays, o que


equivalente

Alm disso, h uma sintaxe especial para inicializar


estes arrays
int[][] tabuleiro = new int[3][3];

String dados[][][] = new String[300][10][50];


24
ENUMERAES
Uma enumerao um tipo cujos valores possveis
pertencem a um conjunto limitado, pr-definido
enum Naipe { Espadas, Ouros, Copas, Paus }

Naipe n = Naipe.Espadas;

Tipos enumerados podem ser usados em switches


switch (n)
{
case Espadas:
...
break;
...
} 25
ENUMERAES
Uma enumerao um tipo cujos valores possveis
pertencem a um conjunto limitado, pr-definido
enum Naipe { Espadas, Ouros, Copas, Paus }

Naipe n = Naipe.Espadas;

Sempre que se for usar um dos possveis valores de uma


Tipos enumerados podemdeve-se
enumerao, ser usados switches
emcom
qualific-lo o nome da
switch (n)
enumerao.
{
Usa-se Naipe.Espadas,
case Espadas: e no simplesmente Espadas
...
Isso acontece porque mais de uma enumerao pode ter
break;
o valor Espadas. (Ex.: Armas.Espadas)
...
} 26
ENUMERAES
Em switches, entretando, o compilador sabe, pelo tipo da
Uma enumerao um tipo cujos valores possveis
varivel n, a qual enum este Espadas pertence. Ento
pertencem a um conjunto limitado, pr-definido
no necessrio indicar o tipo.
enum Naipe { Espadas, Ouros, Copas, Paus }
Alis, estranhamente, proibido qualificar um valor de
enumerao Naipe
em um nswitch. O compilador gera um erro
= Naipe.Espadas;
nestes casos

Tipos enumerados podem ser usados em switches


switch (n)
{
case Espadas:
...
break;
...
} 27
CLASSES EM JAVA
A unidade bsica da Linguagem Java a
Classe;

Programas Java so compostos de objetos que


interagem entre si trocando mensagens
(invocando mtodos).

28
EXEMPLO
public class Motor
{
//Atributos
private int marcha = 0;
private int rotao = 0;

//Construtores
public Motor(int marcha) { this.marcha = marcha; }

public Motor() { }

//Mtodos
public void sobeMarcha() { marcha++; }

public void desceMarcha() { marcha--; }

public int getMarcha() { return marcha; }

//Outros mtodos...
} 29
CLASSES
O corpo de uma classe pode conter:
Atributos;
Mtodos;
Construtores.

30
ATRIBUTOS
Atributos so variveis que expressam o estado de um objeto;

Como qualquer varivel, podem ser de tipos simples (int, float,


boolean, etc.), um tipo referncia (classe ou interface), ou ainda um
array. Ex:
private int x;
private boolean[] b;
private Motor motor1;
private Acelervel[] ac;

Atributos podem ser inicializados em sua declarao. Ex:


private int x = 20;
private Motor motor1 = new Motor();
private Acelervel[] ac = new Bicicleta[5];
31
ATRIBUTOS (CONT)
recomendvel que atributos sejam declarados
como private, garantindo assim o
encapsulamento dos dados;
Os valor do atributo deve ser acessado atravs de
getters e setters;
Exemplo:
private int idade;

public int getIdade(){


return idade;
}

public void setIdade(int idade) { 32


this.idade = idade;
}
MTODOS
Mtodos so aes que objetos podem executar;

Podem possuir parmetros, que assim como atributos podem ser de


qualquer tipo simples, tipo referncia, ou array;

Mtodos podem executar operaes que retornam ou no


resultados. No primeiro caso seu tipo de retorno deve ser indicado,
no segundo ele deve ser declarado como void.
public void fazCoisa(int param) { ... }
public int calculaValor(int p1, float p2) { ... }

Mtodos podem ter o mesmo nome, desde que tenham nmero e/ou
tipo de parmetros diferentes entre si.
33
MTODOS (CONT.)
Dentro de mtodos pode-se usar a palavra chave this para fazer
referncia ao objeto sobre o qual o mtodo foi chamado

Mtodos que retornam algum valor devem faz-lo utilizando a


palavra-chave return seguida do valor a ser retornado.

Mtodos void podem tambm utilizar return; para encerrar sua


execuo a qualquer momento;

Mtodos em geral so declarados como public, para que sejam


acessveis externamente. Mas mtodos que so apenas utilizados
internamente devem ser declarados como private.
34
EXEMPLO
public class Motor
{
private int marcha = 1;

public void sobeMarcha() {


marcha++;
}

public void mudaMarcha(int marcha) {


if (rotaoAdequada())
this.marcha = marcha;
}

public int getMarcha() {


return marcha;
}

private boolean rotaoAdequada() {


//
}
}
35
CONSTRUTORES
Um construtor um tipo especial de mtodo;

Um construtor no tem tipo de retorno (nem mesmo void) e pode


possuir quantos parmetros forem necessrios;

Um objeto pode possuir vrios construtores.

public class Motor


{
private int marcha = 0;
private int rotao = 0;

public Motor(int marcha) { this.marcha = marcha; }

public Motor() { }
} 36
CONSTRUTORES (CONT.)
Se nenhum for declarado, um construtor padro, vazio, criado
implicitamente;

Dentro dos construtores pode ser feita a inicializao de atributos e


qualquer outra operao necessria para o objeto;

O ideal que depois de construdo, o objeto esteja pronto para


operar;

Objetos so criados usando a palavra chave new, seguida do nome


da classe e dos parmetros do construtor.
public class Carro {
private Motor motor;
public Carro() {
motor = new Motor(); 37
}
}
MTODOS ESTTICOS
Mtodos estticos so mtodos que no operam em objetos
double x = Math.pow(3.5, 2);

int[] array = ...;


Arrays.sort(array);

String x = String.valueOf(2341);

So definidos pela palavra chave static


public static int max(int a, int b)
{
return a > b ? a : b;
}
Mtodos estticos no podem acessar atributos de objeto, pois estes so
relativos a uma instncia da classe, que no existe neste contexto
38
MTODO MAIN
O mtodo main um mtodo esttico especial, usado como ponto
de partida de um programa Java;

Deve ser declarado como:

public static void main(String[] args)


{
//comandos...
}

O array de strings a lista de argumentos de linha de comando;

Pode-se declarar mtodos main em qualquer classe, sendo isto


muito usado para testar classes individualmente
39
HERANA
Para declarar uma classe derivada de outra utiliza-se a
palavra chave extends:

Uma subclasse enxerga tudo o que no foi declarado


como private na superclasse
public class Carro
{
private int velocidade;

public int getVelocidade() { return velocidade; }


}

public class Formula1 extends Carro


{
public int calculoQualquer() { return getVelocidade() * 20; }
}
40
HERANA
Para declarar uma classe derivada de outra utiliza-se a
palavra chave extends:

Uma subclasse enxerga tudo o que no foi declarado


Casoprivate
como se tentasse na
acessar diretamente o
superclasse
atributo velocidade, ocorreria um erro
public class Carro
de compilao
{
private int velocidade;

public int getVelocidade() { return velocidade; }


}

public class Formula1 extends Carro


{
public int calculoQualquer() { return getVelocidade() * 20; }
}
41
HERANA (CONT.)
Uma subclasse pode redefinir um mtodo da superclasse, se ele no for
private;
Isso chamado de sobrescrita (override)

Esta caracterstica chamada de polimorfismo: diferentes objetos podem ter


comportamentos diferentes em relao a um mesmo mtodo.

Por exemplo, a classe Carro pode calcular seu deslocamento de uma certa
forma. A classe Formula1 precisa levar mais dados em considerao, como
a presso aerodinmica em seus aeroflios. Ento ela reimplementa o
mtodo para o clculo do deslocamento;

Pode-se usar a palavra chave super para chamar mtodos e construtores


da superclasse.
42
EXEMPLO SUPER
public class Carro
{
...
public Carro(Motor m) { ... }

public int deslocamento() { return motor.getAcerao() * 20; }


}

public class Formula1 extends Carro


{
...
public Formula1(Motor m, float inclAeroflio)
{
super(m);
...
}

public int deslocamento() { return motor.getAcerao() * inclAeroflio; }


}
43
PROTECTED
A palavra-chave protected um meio termo
entre public e private, para a declarao de
membros
Eles so, em geral, vistos como se fossem private
Mas para subclasses eles so como public

Exetoem casos muito especiais, deve-se evitar


o uso de protected, pois ele quebra o
encapsulamento da superclasse
44
VINCULAO DINMICA
A criao de hierarquias de classes permite que se trate, de forma abstrata, objetos
de classes especializadas como se fossem de classes mais gerais

Pode-se fazer:
Carro[] carros = new Carro[2];

carros[0] = new Carro();


carros[1] = new Formula1();

for (Carro c : carros)


{
int desloc = c.deslocamento();
System.out.println( desloc );
}

Quando um mtodo chamado, no importa o tipo declarado da varivel, a mquina


virtual invoca o mtodo com base do tipo real dela
45
VINCULAO DINMICA
A criao de hierarquias de classes permite que se trate, de forma abstrata, objetos
Oambientedeexecuosabequeneste
de classes especializadas como se fossem de classes mais gerais
ponto, se o Carro em questo for um
Formula1, ele deve chamar a verso do
Pode-se fazer:
mtodo definida nesta classe, e no a verso
Carro[] mais= geral,
carros definida na classe Carro
new Carro[2];

carros[0] = new Carro();


carros[1] = new Formula1();

for (Carro c : carros)


{
int desloc = c.deslocamento();
System.out.println( desloc );
}

Quando um mtodo chamado, no importa o tipo declarado da varivel, a mquina


virtual invoca o mtodo com base do tipo real dela
46
COERO DE OBJETOS
Suponha que o seguinte mtodo seja adicionada classe Formula1:
String[] getPatrocinadores() {...}
Caso se queira chamar esse mtodo a partir de uma varivel do tipo
Carro, preciso informar ao compilador explicitamente que aquela
varivel guarda um Formula1 mesmo, e no um carro qualquer

Carro[] carros = ...;


//erro de compilao
String[] p = carros[0].getPatrocinadores();

//Compilador aceita
Formula1 f = (Formula1) carros[0];

String[] p = f.getPatrocinadores();

47
COERO DE OBJETOS
Suponha que o seguinte mtodo seja adicionada classe Formula1:
String[] getPatrocinadores() {...}

Caso se queira chamar esse mtodo a partir de uma varivel do tipo


Carro, preciso informar ao compilador explicitamente que aquela
varivel guarda um Formula1 mesmo, e no um carro qualquer

Carro[] carros = ...;


//erro de compilao
String[] p = carros[0].getPatrocinadores();

//Compilador aceita
Formula1 f = (Formula1) carros[0];

Typecast, String[] p = f.getPatrocinadores();


48
ou coero
COERO DE OBJETOS
Suponha que o seguinte mtodo seja adicionada classe Formula1:
String[] getPatrocinadores() {...}
Caso se queira chamar esse mtodo a partir de uma varivel do tipo
Carro, preciso informar ao compilador explicitamente que aquela
varivel guarda um Formula1 mesmo, e no um carro qualquer
Erro em tempo de execuo caso
carros[0] no seja um Formula1
Carro[] carros = ...;
ClassCastException
//erro de compilao
String[] p = carros[0].getPatrocinadores();

//Compilador aceita
Formula1 f = (Formula1) carros[0];

49
String[] p = f.getPatrocinadores();
CHECAGEM DE TIPOS
Para se certificar que um objeto mesmo de um dado tipo, e assim
evitar erros, pode-se checar em tempo de execuo o real tipo de
um objeto.
Pode-se checar explicitamente se a classe de um objeto uma dada
classe, ou usar o operador instanceof.

if ( carros[0].getClass() == Formula1.class )
{
Formula1 f = (Formula1)carros[0];
}

if ( carros[0] instanceof Formula1 )


{
Formula1 f = (Formula1)carros[0];
}
50
CHECAGEM DE TIPOS
Para se certificar que um objeto mesmo de um dado tipo, e assim
evitar erros, pode-se checar em tempo de execuo o real tipo de
um objeto.
Pode-se checar explicitamente se a classe de um objeto uma dada
classe, ou usar o operador instanceof.

if ( carros[0].getClass() == Formula1.class )
{
Formula1 f = (Formula1)carros[0];
}

Checa se o objeto desta


if (
classe emcarros[0]
especfico instanceof Formula1 )
{
Formula1 f = (Formula1)carros[0];
}
51
CHECAGEM DE TIPOS
Para se certificar que um objeto mesmo de um dado tipo, e assim
evitar erros, pode-se checar em tempo de execuo o real tipo de
um objeto.
Pode-se checar explicitamente se a classe de um objeto uma dada
classe, ou usar o operador instanceof.

if ( carros[0].getClass() == Formula1.class )
{
Checa seFormula1
o objeto fdesta
= (Formula1)carros[0];
}
classe, ou de uma classe
descendente

if ( carros[0] instanceof Formula1 )


{
Formula1 f = (Formula1)carros[0];
}
52
PACKAGES
Packages criam escopos para declarao de classes;
package instrumentos; package perifericos;

public class Teclado public class Teclado


{ {
void tocar(); char ultimaTecla();
} }

A package faz parte do nome da classe.


instrumentos.Teclado ti;
perifericos.Teclado tp;

ti.tocar();
char c = tp.ultimaTecla(); 53
PACKAGES
Declaraes de import permitem usar classes sem a qualificao da
package.

package instrumentos; package teste;

public class Teclado import instrumentos.Teclado;


{ ...
void tocar(); Teclado t;
} t.tocar();

Pode-se importar todas as classes de uma package ou apenas uma classe


especfica;
import nome.da.package.*;
import nome.da.package.NomeDaClasse;

A package java.lang importada implicitamente. 54


PACKAGES
Arquivos com declarao de package devem ter
estrutura de diretrio especial.

Package Diretrio
exemplo exempo/
br.ufsc.gsigma br/ufsc/gsigma/
Recomenda-se que nomes de package sejam
em minsculas, e sigam o nome do domnio de
internet do desenvolvedor.
55
PACKAGES E DECLARAES DE
CLASSES/INTERFACES
Classes e interfaces podem ou no ser declaradas como
pblicas;
As no declaradas como pblicas so visveis apenas por
outras classes e interfaces declaradas na mesma package;

As pblicas tem visibilidade externa total;


Arquivo deve ter o mesmo nome da classe/interface;
Apenas uma classe/interface pblica por arquivo.

56
INTERFACES
Permitem expressar comportamento sem se preocupar
com a implementao.
interface Voador class Ave implements Voador
{ {
void voar(int tempo); public void voar(int tempo){...}
} public void comer(){...}
}

class Avio implements Voador


{
public void voar(int tempo){...}
public void abastecer(){...}
}

class DiscoVoador implements Voador


{
public void voar(int tempo){...}
public void piscar(){...} 57
}
INTERFACES
Permitem expressar comportamento sem se preocupar
com a implementao.
interface Voador class Ave implements Voador
{ {
void voar(int tempo); public void voar(int tempo){...}
} public void comer(){...}
}

class Avio implements Voador


Todas as classes {
que implementam a public void voar(int tempo){...}
interface Voador public void abastecer(){...}
}
precisam prover um
mtodo voar class DiscoVoador implements Voador
{
public void voar(int tempo){...}
public void piscar(){...} 58
}
INTERFACES
Clientesusam a interface sem saber qual a
classe que a implementa.
class Testador
{
public void testar(Voador v)
{ Ave a = new Ave();
for (int i=0; i<5; i++) Avio v = new Avio();
v.voar(10 * i); DiscoVoador d = new DiscoVoador();
} ...
} Testador t = new Testador();
...
t.testar(a);
t.testar(v);
t.testar(d);

59
INTERFACES
Clientes usam a interface sem saber qual a
classe que a implementa.
class Testador
{
public void testar(Voador v)
{
for (int i=0; i<5; i++)
v.voar(10 * i); Ave a = new Ave();
} Avio v = new Avio();
} DiscoVoador d = new DiscoVoador();
...
Testador t = new Testador();
O mtodo testar quer algum ...
objeto que implemente o t.testar(a);
comportamento de um Voador, t.testar(v);
t.testar(d);
no importa qual
60
INTERFACES
Uma classe pode implementar vrias interfaces

interface Animal
{
interface Voador void comer();
{ void dormir();
void voar(int tempo); }
}

class Ave implements Voador, Animal


{
public void voar(int tempo){...}
public void comer(){...}
public void dormir(){...}
} 61
INTERFACES
Interfaces podem herdar outras interfaces

interface Animal interface Voador


{ {
void comer(); void voar(int tempo);
void dormir(); }
}

interface Mamfero extends Animal interface AnimalVoador extends


{ Animal, Voador
void mamar(); {
} }
62
INSTALAO DE
AMBINTE DE PROGRAMAO
Mquina virtual
Java da Sun - http://java.sun.com/
Java SE - http://java.sun.com/j2se/
JDK (Java Development Kit)

Ambiente de Desenvolvimento
Eclipse - http://www.eclipse.org/
Eclipse SDK 3.6 (ou superior)

Netbeans - http://www.netbeans.org/
Netbeans IDE 6.5 (ou superior)

Você também pode gostar