MC600 - Segundo semestre de 2003 - LISTA 13 ------------------------------------------- 1. Como se definem classes abstratas em Java? 2. Qual é a utilidade de se ter uma classe abstrata? 3. Um atributo é chamado estático quando é definido através da palavra reservada static. Qual é a diferença entre atributos estáticos e não estáticos? 4. Digamos que a classe Roedores tenha as classes Rato e Camundongo como suas herdeiras. Suponha também que a classe RatoDeLaboratorio seja herdeira da classe Rato. Examine as linhas a seguir: Roedor roedor; Rato rato = new Rato(); Camundongo camundongo = new Camundongo(); RatoDeLaboratorio rdl = new RatoDeLaboratorio(); Qual das linhas abaixo causaria um erro de compilação? Por que? a. roedor = rato; b. roedor = camundongo; c. rdl = null; d. rdl = rato; 5. Qual é a diferença entre sobrecarga (overloading em inglês) e polimorfismo em Java? 6. Um método é chamado estático quando é definido através da palavra reservada static. Qual é a diferença entre métodos estáticos e não estáticos? 7. É possível definir classes não abstratas herdeiras de uma classe abstrata? Por que? É possível definir um método não abstrato em uma classe abstrata? Por que? 8. Dada a seguinte definição de um método: int compute( int a, double y ){ . . . .} Qual (ou quais) dos seguintes métodos poderiam coexistir com ele na mesma classe? Justifique a resposta para cada um deles. a. int compute( int sum, double value ){ . . . .} b. double compute( int a, double y ){ . . . .} c. double compute( int sum, double y ){ . . . .} d. int compute( int a, int y ){ . . . .}