herança - escola de artes, ciências e humanidades · reuso e herança • reuso é outro conceito...
Post on 13-Aug-2020
0 Views
Preview:
TRANSCRIPT
SISTEMAS DEINFORMAÇÃO
11
11SISTEMAS DE
INFORMAÇÃO1
11
1SISTEMAS DEINFORMAÇÃO
11SISTEMAS DE
INFORMAÇÃO1
11
1SISTEMAS DEINFORMAÇÃO
11
11SISTEMAS DE
INFORMAÇÃO1
1SISTEMAS DEINFORMAÇÃO
11
1
SISTEMAS DEINFORMAÇÃO
11
11 1SISTEMAS DE
INFORMAÇÃO1
11
1SISTEMAS DEINFORMAÇÃO
11SISTEMAS DE
INFORMAÇÃO1
11
1SISTEMAS DEINFORMAÇÃO
11
11SISTEMAS DE
INFORMAÇÃO1
1SISTEMAS DEINFORMAÇÃO
11
11SISTEMAS DE
INFORMAÇÃO11
Fátima L. S. NunesLuciano A. DigiampietriNorton T. Roman
Herança
SISTEMAS DEINFORMAÇÃO
22
22SISTEMAS DE
INFORMAÇÃO2
22
2SISTEMAS DEINFORMAÇÃO
22SISTEMAS DE
INFORMAÇÃO2
22
2SISTEMAS DEINFORMAÇÃO
22
22SISTEMAS DE
INFORMAÇÃO2
2SISTEMAS DEINFORMAÇÃO
22
2
SISTEMAS DEINFORMAÇÃO
22
22 2SISTEMAS DE
INFORMAÇÃO2
22
2SISTEMAS DEINFORMAÇÃO
22SISTEMAS DE
INFORMAÇÃO2
22
2SISTEMAS DEINFORMAÇÃO
22
22SISTEMAS DE
INFORMAÇÃO2
2SISTEMAS DEINFORMAÇÃO
22
22SISTEMAS DE
INFORMAÇÃO22
Motivação
• Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP
• Precisa fazer:– Cadastro de alunos e professores– Há professores doutores e não doutores
SISTEMAS DEINFORMAÇÃO
33
33SISTEMAS DE
INFORMAÇÃO3
33
3SISTEMAS DEINFORMAÇÃO
33SISTEMAS DE
INFORMAÇÃO3
33
3SISTEMAS DEINFORMAÇÃO
33
33SISTEMAS DE
INFORMAÇÃO3
3SISTEMAS DEINFORMAÇÃO
33
3
SISTEMAS DEINFORMAÇÃO
33
33 3SISTEMAS DE
INFORMAÇÃO3
33
3SISTEMAS DEINFORMAÇÃO
33SISTEMAS DE
INFORMAÇÃO3
33
3SISTEMAS DEINFORMAÇÃO
33
33SISTEMAS DE
INFORMAÇÃO3
3SISTEMAS DEINFORMAÇÃO
33
33SISTEMAS DE
INFORMAÇÃO33
class Aluno
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeIngresso;private String _curso;// métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de ingresso: “ + _anoDeIngresso);System.out.println(“Curso: “ + _curso);
}
}
SISTEMAS DEINFORMAÇÃO
44
44SISTEMAS DE
INFORMAÇÃO4
44
4SISTEMAS DEINFORMAÇÃO
44SISTEMAS DE
INFORMAÇÃO4
44
4SISTEMAS DEINFORMAÇÃO
44
44SISTEMAS DE
INFORMAÇÃO4
4SISTEMAS DEINFORMAÇÃO
44
4
SISTEMAS DEINFORMAÇÃO
44
44 4SISTEMAS DE
INFORMAÇÃO4
44
4SISTEMAS DEINFORMAÇÃO
44SISTEMAS DE
INFORMAÇÃO4
44
4SISTEMAS DEINFORMAÇÃO
44
44SISTEMAS DE
INFORMAÇÃO4
4SISTEMAS DEINFORMAÇÃO
44
44SISTEMAS DE
INFORMAÇÃO44
class Professor
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);
}
}
SISTEMAS DEINFORMAÇÃO
55
55SISTEMAS DE
INFORMAÇÃO5
55
5SISTEMAS DEINFORMAÇÃO
55SISTEMAS DE
INFORMAÇÃO5
55
5SISTEMAS DEINFORMAÇÃO
55
55SISTEMAS DE
INFORMAÇÃO5
5SISTEMAS DEINFORMAÇÃO
55
5
SISTEMAS DEINFORMAÇÃO
55
55 5SISTEMAS DE
INFORMAÇÃO5
55
5SISTEMAS DEINFORMAÇÃO
55SISTEMAS DE
INFORMAÇÃO5
55
5SISTEMAS DEINFORMAÇÃO
55
55SISTEMAS DE
INFORMAÇÃO5
5SISTEMAS DEINFORMAÇÃO
55
55SISTEMAS DE
INFORMAÇÃO55
class ProfessorDoutor
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);System.out.println(“Ano de obtenção do título de Doutor: “ + _anoObtencaoDoutorado);System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);
}
}
SISTEMAS DEINFORMAÇÃO
66
66SISTEMAS DE
INFORMAÇÃO6
66
6SISTEMAS DEINFORMAÇÃO
66SISTEMAS DE
INFORMAÇÃO6
66
6SISTEMAS DEINFORMAÇÃO
66
66SISTEMAS DE
INFORMAÇÃO6
6SISTEMAS DEINFORMAÇÃO
66
6
SISTEMAS DEINFORMAÇÃO
66
66 6SISTEMAS DE
INFORMAÇÃO6
66
6SISTEMAS DEINFORMAÇÃO
66SISTEMAS DE
INFORMAÇÃO6
66
6SISTEMAS DEINFORMAÇÃO
66
66SISTEMAS DE
INFORMAÇÃO6
6SISTEMAS DEINFORMAÇÃO
66
66SISTEMAS DE
INFORMAÇÃO66
• O que você vê de estranho aqui? Algo o incomoda?
SISTEMAS DEINFORMAÇÃO
77
77SISTEMAS DE
INFORMAÇÃO7
77
7SISTEMAS DEINFORMAÇÃO
77SISTEMAS DE
INFORMAÇÃO7
77
7SISTEMAS DEINFORMAÇÃO
77
77SISTEMAS DE
INFORMAÇÃO7
7SISTEMAS DEINFORMAÇÃO
77
7
SISTEMAS DEINFORMAÇÃO
77
77 7SISTEMAS DE
INFORMAÇÃO7
77
7SISTEMAS DEINFORMAÇÃO
77SISTEMAS DE
INFORMAÇÃO7
77
7SISTEMAS DEINFORMAÇÃO
77
77SISTEMAS DE
INFORMAÇÃO7
7SISTEMAS DEINFORMAÇÃO
77
77SISTEMAS DE
INFORMAÇÃO77
• O que você vê de estranho aqui? Algo o incomoda?
• São três classe com quase todo o código repetido!!!
SISTEMAS DEINFORMAÇÃO
88
88SISTEMAS DE
INFORMAÇÃO8
88
8SISTEMAS DEINFORMAÇÃO
88SISTEMAS DE
INFORMAÇÃO8
88
8SISTEMAS DEINFORMAÇÃO
88
88SISTEMAS DE
INFORMAÇÃO8
8SISTEMAS DEINFORMAÇÃO
88
8
SISTEMAS DEINFORMAÇÃO
88
88 8SISTEMAS DE
INFORMAÇÃO8
88
8SISTEMAS DEINFORMAÇÃO
88SISTEMAS DE
INFORMAÇÃO8
88
8SISTEMAS DEINFORMAÇÃO
88
88SISTEMAS DE
INFORMAÇÃO8
8SISTEMAS DEINFORMAÇÃO
88
88SISTEMAS DE
INFORMAÇÃO88
class Aluno
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeIngresso;private String _curso;// métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de ingresso: “ + _anoDeIngresso);System.out.println(“Curso: “ + _curso);
}
}
SISTEMAS DEINFORMAÇÃO
99
99SISTEMAS DE
INFORMAÇÃO9
99
9SISTEMAS DEINFORMAÇÃO
99SISTEMAS DE
INFORMAÇÃO9
99
9SISTEMAS DEINFORMAÇÃO
99
99SISTEMAS DE
INFORMAÇÃO9
9SISTEMAS DEINFORMAÇÃO
99
9
SISTEMAS DEINFORMAÇÃO
99
99 9SISTEMAS DE
INFORMAÇÃO9
99
9SISTEMAS DEINFORMAÇÃO
99SISTEMAS DE
INFORMAÇÃO9
99
9SISTEMAS DEINFORMAÇÃO
99
99SISTEMAS DE
INFORMAÇÃO9
9SISTEMAS DEINFORMAÇÃO
99
99SISTEMAS DE
INFORMAÇÃO99
class Professor
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);
}
}
SISTEMAS DEINFORMAÇÃO
1010
1010SISTEMAS DE
INFORMAÇÃO10
1010
10SISTEMAS DEINFORMAÇÃO
1010SISTEMAS DE
INFORMAÇÃO10
1010
10SISTEMAS DEINFORMAÇÃO
1010
1010SISTEMAS DE
INFORMAÇÃO10
10SISTEMAS DEINFORMAÇÃO
1010
10
SISTEMAS DEINFORMAÇÃO
1010
1010 10SISTEMAS DE
INFORMAÇÃO10
1010
10SISTEMAS DEINFORMAÇÃO
1010SISTEMAS DE
INFORMAÇÃO10
1010
10SISTEMAS DEINFORMAÇÃO
1010
1010SISTEMAS DE
INFORMAÇÃO10
10SISTEMAS DEINFORMAÇÃO
1010
1010SISTEMAS DE
INFORMAÇÃO1010
class ProfessorDoutor
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);System.out.println(“Ano de obtenção do título de Doutor: “ + _anoObtencaoDoutorado);System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);
}
}
SISTEMAS DEINFORMAÇÃO
1111
1111SISTEMAS DE
INFORMAÇÃO11
1111
11SISTEMAS DEINFORMAÇÃO
1111SISTEMAS DE
INFORMAÇÃO11
1111
11SISTEMAS DEINFORMAÇÃO
1111
1111SISTEMAS DE
INFORMAÇÃO11
11SISTEMAS DEINFORMAÇÃO
1111
11
SISTEMAS DEINFORMAÇÃO
1111
1111 11SISTEMAS DE
INFORMAÇÃO11
1111
11SISTEMAS DEINFORMAÇÃO
1111SISTEMAS DE
INFORMAÇÃO11
1111
11SISTEMAS DEINFORMAÇÃO
1111
1111SISTEMAS DE
INFORMAÇÃO11
11SISTEMAS DEINFORMAÇÃO
1111
1111SISTEMAS DE
INFORMAÇÃO1111
class Professor
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// métodos de acesso (public) (...)(public void imprimeDados(){
System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);
}
}
SISTEMAS DEINFORMAÇÃO
1212
1212SISTEMAS DE
INFORMAÇÃO12
1212
12SISTEMAS DEINFORMAÇÃO
1212SISTEMAS DE
INFORMAÇÃO12
1212
12SISTEMAS DEINFORMAÇÃO
1212
1212SISTEMAS DE
INFORMAÇÃO12
12SISTEMAS DEINFORMAÇÃO
1212
12
SISTEMAS DEINFORMAÇÃO
1212
1212 12SISTEMAS DE
INFORMAÇÃO12
1212
12SISTEMAS DEINFORMAÇÃO
1212SISTEMAS DE
INFORMAÇÃO12
1212
12SISTEMAS DEINFORMAÇÃO
1212
1212SISTEMAS DE
INFORMAÇÃO12
12SISTEMAS DEINFORMAÇÃO
1212
1212SISTEMAS DE
INFORMAÇÃO1212
class ProfessorDoutor
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// métodos de acesso (public) (...)(public void imprimeDados(){
System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);System.out.println(“Ano de obtenção do título de Doutor: “ + _anoObtencaoDoutorado);System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);
}
}
SISTEMAS DEINFORMAÇÃO
1313
1313SISTEMAS DE
INFORMAÇÃO13
1313
13SISTEMAS DEINFORMAÇÃO
1313SISTEMAS DE
INFORMAÇÃO13
1313
13SISTEMAS DEINFORMAÇÃO
1313
1313SISTEMAS DE
INFORMAÇÃO13
13SISTEMAS DEINFORMAÇÃO
1313
13
SISTEMAS DEINFORMAÇÃO
1313
1313 13SISTEMAS DE
INFORMAÇÃO13
1313
13SISTEMAS DEINFORMAÇÃO
1313SISTEMAS DE
INFORMAÇÃO13
1313
13SISTEMAS DEINFORMAÇÃO
1313
1313SISTEMAS DE
INFORMAÇÃO13
13SISTEMAS DEINFORMAÇÃO
1313
1313SISTEMAS DE
INFORMAÇÃO1313
• O que você vê de estranho aqui? Algo o incomoda?
• São três classe com quase todo o código repetido!!!– Repetição do trabalho:
• desperdício de tempo de desenvolvimento• desperdício de tempo de validação do código (teste
das mesmas coisas....)
�
– Mudanças em uma parte comum a elas devem ser feitas (e testadas novamente) nas três classes!
• Há uma solução?
SISTEMAS DEINFORMAÇÃO
1414
1414SISTEMAS DE
INFORMAÇÃO14
1414
14SISTEMAS DEINFORMAÇÃO
1414SISTEMAS DE
INFORMAÇÃO14
1414
14SISTEMAS DEINFORMAÇÃO
1414
1414SISTEMAS DE
INFORMAÇÃO14
14SISTEMAS DEINFORMAÇÃO
1414
14
SISTEMAS DEINFORMAÇÃO
1414
1414 14SISTEMAS DE
INFORMAÇÃO14
1414
14SISTEMAS DEINFORMAÇÃO
1414SISTEMAS DE
INFORMAÇÃO14
1414
14SISTEMAS DEINFORMAÇÃO
1414
1414SISTEMAS DE
INFORMAÇÃO14
14SISTEMAS DEINFORMAÇÃO
1414
1414SISTEMAS DE
INFORMAÇÃO1414
• O que você vê de estranho aqui? Algo o incomoda?
• São três classe com quase todo o código repetido!!!– Repetição do trabalho
• desperdício de tempo de desenvolvimento• desperdício de tempo de validação do código (teste
das mesmas coisas....)
�
– Mudanças em uma parte comum a elas devem ser feitas (e testadas novamente) nas três classes!
• Há uma solução?
REUSO DE SOFTWARE
SISTEMAS DEINFORMAÇÃO
1515
1515SISTEMAS DE
INFORMAÇÃO15
1515
15SISTEMAS DEINFORMAÇÃO
1515SISTEMAS DE
INFORMAÇÃO15
1515
15SISTEMAS DEINFORMAÇÃO
1515
1515SISTEMAS DE
INFORMAÇÃO15
15SISTEMAS DEINFORMAÇÃO
1515
15
SISTEMAS DEINFORMAÇÃO
1515
1515 15SISTEMAS DE
INFORMAÇÃO15
1515
15SISTEMAS DEINFORMAÇÃO
1515SISTEMAS DE
INFORMAÇÃO15
1515
15SISTEMAS DEINFORMAÇÃO
1515
1515SISTEMAS DE
INFORMAÇÃO15
15SISTEMAS DEINFORMAÇÃO
1515
1515SISTEMAS DE
INFORMAÇÃO1515
Reuso e Herança
• Reuso é outro conceito importante, não só em Programação Orientado a Objetos como em bom desenvolvimento de software em geral
• Uma das formas de fazer REUSO em POO é através do mecanismo de herança
• Fatorar o que é comum, e implementar o que for diferente
SISTEMAS DEINFORMAÇÃO
1616
1616SISTEMAS DE
INFORMAÇÃO16
1616
16SISTEMAS DEINFORMAÇÃO
1616SISTEMAS DE
INFORMAÇÃO16
1616
16SISTEMAS DEINFORMAÇÃO
1616
1616SISTEMAS DE
INFORMAÇÃO16
16SISTEMAS DEINFORMAÇÃO
1616
16
SISTEMAS DEINFORMAÇÃO
1616
1616 16SISTEMAS DE
INFORMAÇÃO16
1616
16SISTEMAS DEINFORMAÇÃO
1616SISTEMAS DE
INFORMAÇÃO16
1616
16SISTEMAS DEINFORMAÇÃO
1616
1616SISTEMAS DE
INFORMAÇÃO16
16SISTEMAS DEINFORMAÇÃO
1616
1616SISTEMAS DE
INFORMAÇÃO1616
Herança
Pessoa
Aluno Professor
ProfessorDoutor
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
private int _anoDeAdmissao;
private String _departamento;
private int _anoObtencaoDoutorado;
private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
Classes filhas HERDAM atributos e código da classe mãe!
SISTEMAS DEINFORMAÇÃO
1717
1717SISTEMAS DE
INFORMAÇÃO17
1717
17SISTEMAS DEINFORMAÇÃO
1717SISTEMAS DE
INFORMAÇÃO17
1717
17SISTEMAS DEINFORMAÇÃO
1717
1717SISTEMAS DE
INFORMAÇÃO17
17SISTEMAS DEINFORMAÇÃO
1717
17
SISTEMAS DEINFORMAÇÃO
1717
1717 17SISTEMAS DE
INFORMAÇÃO17
1717
17SISTEMAS DEINFORMAÇÃO
1717SISTEMAS DE
INFORMAÇÃO17
1717
17SISTEMAS DEINFORMAÇÃO
1717
1717SISTEMAS DE
INFORMAÇÃO17
17SISTEMAS DEINFORMAÇÃO
1717
1717SISTEMAS DE
INFORMAÇÃO1717
Herança
Pessoa
Aluno Professor
ProfessorDoutor
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
private int _anoDeAdmissao;
private String _departamento;
private int _anoObtencaoDoutorado;
private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
Superclasse(de Aluno,Professor eProfessorDoutor)
�
SISTEMAS DEINFORMAÇÃO
1818
1818SISTEMAS DE
INFORMAÇÃO18
1818
18SISTEMAS DEINFORMAÇÃO
1818SISTEMAS DE
INFORMAÇÃO18
1818
18SISTEMAS DEINFORMAÇÃO
1818
1818SISTEMAS DE
INFORMAÇÃO18
18SISTEMAS DEINFORMAÇÃO
1818
18
SISTEMAS DEINFORMAÇÃO
1818
1818 18SISTEMAS DE
INFORMAÇÃO18
1818
18SISTEMAS DEINFORMAÇÃO
1818SISTEMAS DE
INFORMAÇÃO18
1818
18SISTEMAS DEINFORMAÇÃO
1818
1818SISTEMAS DE
INFORMAÇÃO18
18SISTEMAS DEINFORMAÇÃO
1818
1818SISTEMAS DE
INFORMAÇÃO1818
Herança
Pessoa
Aluno Professor
ProfessorDoutor
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
private int _anoDeAdmissao;
private String _departamento;
private int _anoObtencaoDoutorado;
private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
Superclasse(de Aluno,Professor eProfessorDoutor)P
Subclasse(de Pessoa)
SISTEMAS DEINFORMAÇÃO
1919
1919SISTEMAS DE
INFORMAÇÃO19
1919
19SISTEMAS DEINFORMAÇÃO
1919SISTEMAS DE
INFORMAÇÃO19
1919
19SISTEMAS DEINFORMAÇÃO
1919
1919SISTEMAS DE
INFORMAÇÃO19
19SISTEMAS DEINFORMAÇÃO
1919
19
SISTEMAS DEINFORMAÇÃO
1919
1919 19SISTEMAS DE
INFORMAÇÃO19
1919
19SISTEMAS DEINFORMAÇÃO
1919SISTEMAS DE
INFORMAÇÃO19
1919
19SISTEMAS DEINFORMAÇÃO
1919
1919SISTEMAS DE
INFORMAÇÃO19
19SISTEMAS DEINFORMAÇÃO
1919
1919SISTEMAS DE
INFORMAÇÃO1919
Herança
Pessoa
Aluno Professor
ProfessorDoutor
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
private int _anoDeAdmissao;
private String _departamento;
private int _anoObtencaoDoutorado;
private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
Superclasse(de Aluno,Professor eProfessorDoutor)P
Subclasse(de Pessoa)
Subclasse (de Pessoa) eSuperclasse deProfessorDoutor
SISTEMAS DEINFORMAÇÃO
2020
2020SISTEMAS DE
INFORMAÇÃO20
2020
20SISTEMAS DEINFORMAÇÃO
2020SISTEMAS DE
INFORMAÇÃO20
2020
20SISTEMAS DEINFORMAÇÃO
2020
2020SISTEMAS DE
INFORMAÇÃO20
20SISTEMAS DEINFORMAÇÃO
2020
20
SISTEMAS DEINFORMAÇÃO
2020
2020 20SISTEMAS DE
INFORMAÇÃO20
2020
20SISTEMAS DEINFORMAÇÃO
2020SISTEMAS DE
INFORMAÇÃO20
2020
20SISTEMAS DEINFORMAÇÃO
2020
2020SISTEMAS DE
INFORMAÇÃO20
20SISTEMAS DEINFORMAÇÃO
2020
2020SISTEMAS DE
INFORMAÇÃO2020
Herança
Pessoa
Aluno Professor
ProfessorDoutor
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
private int _anoDeAdmissao;
private String _departamento;
private int _anoObtencaoDoutorado;
private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
Superclasse(de Aluno,Professor eProfessorDoutor)
�
Subclasse(de Pessoa)
Subclasse (de Pessoa) eSuperclasse deProfessorDoutor
Subclasse(de Pessoa e deProfessor)
�
SISTEMAS DEINFORMAÇÃO
2121
2121SISTEMAS DE
INFORMAÇÃO21
2121
21SISTEMAS DEINFORMAÇÃO
2121SISTEMAS DE
INFORMAÇÃO21
2121
21SISTEMAS DEINFORMAÇÃO
2121
2121SISTEMAS DE
INFORMAÇÃO21
21SISTEMAS DEINFORMAÇÃO
2121
21
SISTEMAS DEINFORMAÇÃO
2121
2121 21SISTEMAS DE
INFORMAÇÃO21
2121
21SISTEMAS DEINFORMAÇÃO
2121SISTEMAS DE
INFORMAÇÃO21
2121
21SISTEMAS DEINFORMAÇÃO
2121
2121SISTEMAS DE
INFORMAÇÃO21
21SISTEMAS DEINFORMAÇÃO
2121
2121SISTEMAS DE
INFORMAÇÃO2121
Implementação de herança em Java
SISTEMAS DEINFORMAÇÃO
2222
2222SISTEMAS DE
INFORMAÇÃO22
2222
22SISTEMAS DEINFORMAÇÃO
2222SISTEMAS DE
INFORMAÇÃO22
2222
22SISTEMAS DEINFORMAÇÃO
2222
2222SISTEMAS DE
INFORMAÇÃO22
22SISTEMAS DEINFORMAÇÃO
2222
22
SISTEMAS DEINFORMAÇÃO
2222
2222 22SISTEMAS DE
INFORMAÇÃO22
2222
22SISTEMAS DEINFORMAÇÃO
2222SISTEMAS DE
INFORMAÇÃO22
2222
22SISTEMAS DEINFORMAÇÃO
2222
2222SISTEMAS DE
INFORMAÇÃO22
22SISTEMAS DEINFORMAÇÃO
2222
2222SISTEMAS DE
INFORMAÇÃO2222
class Pessoa{
private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;// métodos de acesso (public) a esses 5 atributos(...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);
}}
SISTEMAS DEINFORMAÇÃO
2323
2323SISTEMAS DE
INFORMAÇÃO23
2323
23SISTEMAS DEINFORMAÇÃO
2323SISTEMAS DE
INFORMAÇÃO23
2323
23SISTEMAS DEINFORMAÇÃO
2323
2323SISTEMAS DE
INFORMAÇÃO23
23SISTEMAS DEINFORMAÇÃO
2323
23
SISTEMAS DEINFORMAÇÃO
2323
2323 23SISTEMAS DE
INFORMAÇÃO23
2323
23SISTEMAS DEINFORMAÇÃO
2323SISTEMAS DE
INFORMAÇÃO23
2323
23SISTEMAS DEINFORMAÇÃO
2323
2323SISTEMAS DE
INFORMAÇÃO23
23SISTEMAS DEINFORMAÇÃO
2323
2323SISTEMAS DE
INFORMAÇÃO2323
class Aluno
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeIngresso;private String _curso;// métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de ingresso: “ +
_anoDeIngresso);System.out.println(“Curso: “ + _curso);
}
}
class Aluno extends Pessoa
{private int _anoDeIngresso;
private String _curso;// 2 pares de métodos de acesso
(public) (...)
�
public void imprimeDados(){
?System.out.println(“Ano de
ingresso: “ +
_anoDeIngresso);
System.out.println(“Curso: “ + _curso);
}
}
VERSÃO ANTIGA VERSÃO COM HERANÇA
SISTEMAS DEINFORMAÇÃO
2424
2424SISTEMAS DE
INFORMAÇÃO24
2424
24SISTEMAS DEINFORMAÇÃO
2424SISTEMAS DE
INFORMAÇÃO24
2424
24SISTEMAS DEINFORMAÇÃO
2424
2424SISTEMAS DE
INFORMAÇÃO24
24SISTEMAS DEINFORMAÇÃO
2424
24
SISTEMAS DEINFORMAÇÃO
2424
2424 24SISTEMAS DE
INFORMAÇÃO24
2424
24SISTEMAS DEINFORMAÇÃO
2424SISTEMAS DE
INFORMAÇÃO24
2424
24SISTEMAS DEINFORMAÇÃO
2424
2424SISTEMAS DE
INFORMAÇÃO24
24SISTEMAS DEINFORMAÇÃO
2424
2424SISTEMAS DE
INFORMAÇÃO2424
class Aluno
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeIngresso;private String _curso;// 7 pares de métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de ingresso: “ +
_anoDeIngresso);System.out.println(“Curso: “ + _curso);
}
}
class Aluno extends Pessoa
{private int _anoDeIngresso;private String _curso;
// 2 pares de métodos de acesso (public) (...)
�
public void imprimeDados(){
super.imprimeDados();
System.out.println(“Ano de ingresso: “ +
_anoDeIngresso);
System.out.println(“Curso: “ + _curso);
}
}
VERSÃO ANTIGA VERSÃO COM HERANÇA
REDEFINIÇÃO DE MÉTODOS
Modifica ou estende um método da superclasse
SISTEMAS DEINFORMAÇÃO
2525
2525SISTEMAS DE
INFORMAÇÃO25
2525
25SISTEMAS DEINFORMAÇÃO
2525SISTEMAS DE
INFORMAÇÃO25
2525
25SISTEMAS DEINFORMAÇÃO
2525
2525SISTEMAS DE
INFORMAÇÃO25
25SISTEMAS DEINFORMAÇÃO
2525
25
SISTEMAS DEINFORMAÇÃO
2525
2525 25SISTEMAS DE
INFORMAÇÃO25
2525
25SISTEMAS DEINFORMAÇÃO
2525SISTEMAS DE
INFORMAÇÃO25
2525
25SISTEMAS DEINFORMAÇÃO
2525
2525SISTEMAS DE
INFORMAÇÃO25
25SISTEMAS DEINFORMAÇÃO
2525
2525SISTEMAS DE
INFORMAÇÃO2525
class Professor
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// 7 pares de métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ +
_anoDeAdmissao);System.out.println(“Departamento: “ +
_departamento);}
}
VERSÃO ANTIGA VERSÃO COM HERANÇA
SISTEMAS DEINFORMAÇÃO
2626
2626SISTEMAS DE
INFORMAÇÃO26
2626
26SISTEMAS DEINFORMAÇÃO
2626SISTEMAS DE
INFORMAÇÃO26
2626
26SISTEMAS DEINFORMAÇÃO
2626
2626SISTEMAS DE
INFORMAÇÃO26
26SISTEMAS DEINFORMAÇÃO
2626
26
SISTEMAS DEINFORMAÇÃO
2626
2626 26SISTEMAS DE
INFORMAÇÃO26
2626
26SISTEMAS DEINFORMAÇÃO
2626SISTEMAS DE
INFORMAÇÃO26
2626
26SISTEMAS DEINFORMAÇÃO
2626
2626SISTEMAS DE
INFORMAÇÃO26
26SISTEMAS DEINFORMAÇÃO
2626
2626SISTEMAS DE
INFORMAÇÃO2626
class Professor
{private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;// 7 pares de métodos de acesso (public) (...)
�
public void imprimeDados(){System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ +
_anoDeAdmissao);System.out.println(“Departamento: “ +
_departamento);}
}
class Professor extends Pessoa
{private int _anoDeAdmissao;private String _departamento;
// 2 pares de métodos de acesso (public) (...)
�
public void imprimeDados(){
super.imprimeDados();
System.out.println(“Ano de admissão: “ + _anoDeAdmissao);
System.out.println(“Departamento: “ + _departamento);
}
}
VERSÃO ANTIGA VERSÃO COM HERANÇA
SISTEMAS DEINFORMAÇÃO
2727
2727SISTEMAS DE
INFORMAÇÃO27
2727
27SISTEMAS DEINFORMAÇÃO
2727SISTEMAS DE
INFORMAÇÃO27
2727
27SISTEMAS DEINFORMAÇÃO
2727
2727SISTEMAS DE
INFORMAÇÃO27
27SISTEMAS DEINFORMAÇÃO
2727
27
SISTEMAS DEINFORMAÇÃO
2727
2727 27SISTEMAS DE
INFORMAÇÃO27
2727
27SISTEMAS DEINFORMAÇÃO
2727SISTEMAS DE
INFORMAÇÃO27
2727
27SISTEMAS DEINFORMAÇÃO
2727
2727SISTEMAS DE
INFORMAÇÃO27
27SISTEMAS DEINFORMAÇÃO
2727
2727SISTEMAS DE
INFORMAÇÃO2727
class ProfessorDoutor {private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// 9 pares de métodos de acesso (public) (...)(public void imprimeDados(){
System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ + _anoDeAdmissao);System.out.println(“Departamento: “ + _departamento);System.out.println(“Ano de obtenção do título de Doutor: “ +
_anoObtencaoDoutorado);System.out.println(“Instituição do Doutorado: “ +
_instituicaoDoutorado);}
}
VERSÃO ANTIGA VERSÃO COM HERANÇA
SISTEMAS DEINFORMAÇÃO
2828
2828SISTEMAS DE
INFORMAÇÃO28
2828
28SISTEMAS DEINFORMAÇÃO
2828SISTEMAS DE
INFORMAÇÃO28
2828
28SISTEMAS DEINFORMAÇÃO
2828
2828SISTEMAS DE
INFORMAÇÃO28
28SISTEMAS DEINFORMAÇÃO
2828
28
SISTEMAS DEINFORMAÇÃO
2828
2828 28SISTEMAS DE
INFORMAÇÃO28
2828
28SISTEMAS DEINFORMAÇÃO
2828SISTEMAS DE
INFORMAÇÃO28
2828
28SISTEMAS DEINFORMAÇÃO
2828
2828SISTEMAS DE
INFORMAÇÃO28
28SISTEMAS DEINFORMAÇÃO
2828
2828SISTEMAS DE
INFORMAÇÃO2828
class ProfessorDoutor {private long _nrUsp;private String _rg;private long _cpf;private String _nome;private char _sexo;private int _anoDeAdmissao;private String _departamento;private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// 9 pares de métodos de acesso (public) (...)(public void imprimeDados(){
System.out.println(“Nome: “ + _nome);System.out.println(“Nr USP: “ + _nrUsp);System.out.println(“CPF: “ + _cpf);System.out.println(“RG: “ + _rg);System.out.println(“Sexo: “ + _sexo);System.out.println(“Ano de admissão: “ +
_anoDeAdmissao);System.out.println(“Departamento: “ +
_departamento);System.out.println(“Ano de obtenção do
título de Doutor: “ + _anoObtencaoDoutorado);
System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);
}
}
class ProfessorDoutor extends Professor
{private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;// 2 pares de métodos de acesso (public) (...)(public void imprimeDados(){
super.imprimeDados();System.out.println(“Ano de obtenção do
título de Doutor: “ + _anoObtencaoDoutorado);
System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);
}
}
VERSÃO ANTIGA VERSÃO COM HERANÇA
SISTEMAS DEINFORMAÇÃO
2929
2929SISTEMAS DE
INFORMAÇÃO29
2929
29SISTEMAS DEINFORMAÇÃO
2929SISTEMAS DE
INFORMAÇÃO29
2929
29SISTEMAS DEINFORMAÇÃO
2929
2929SISTEMAS DE
INFORMAÇÃO29
29SISTEMAS DEINFORMAÇÃO
2929
29
SISTEMAS DEINFORMAÇÃO
2929
2929 29SISTEMAS DE
INFORMAÇÃO29
2929
29SISTEMAS DEINFORMAÇÃO
2929SISTEMAS DE
INFORMAÇÃO29
2929
29SISTEMAS DEINFORMAÇÃO
2929
2929SISTEMAS DE
INFORMAÇÃO29
29SISTEMAS DEINFORMAÇÃO
2929
2929SISTEMAS DE
INFORMAÇÃO2929
Pessoa
Professorprivate int _anoDeAdmissao;private String _departamento;
private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
// 5 pares de mét. de acessovoid imprimeDados();
// 2 pares de mét. de acessovoid imprimeDados();
ProfessorDoutor
// 2 pares de mét. de acessovoid imprimeDados();
Aluno
// 2 pares de mét. de acessovoid imprimeDados();
SISTEMAS DEINFORMAÇÃO
3030
3030SISTEMAS DE
INFORMAÇÃO30
3030
30SISTEMAS DEINFORMAÇÃO
3030SISTEMAS DE
INFORMAÇÃO30
3030
30SISTEMAS DEINFORMAÇÃO
3030
3030SISTEMAS DE
INFORMAÇÃO30
30SISTEMAS DEINFORMAÇÃO
3030
30
SISTEMAS DEINFORMAÇÃO
3030
3030 30SISTEMAS DE
INFORMAÇÃO30
3030
30SISTEMAS DEINFORMAÇÃO
3030SISTEMAS DE
INFORMAÇÃO30
3030
30SISTEMAS DEINFORMAÇÃO
3030
3030SISTEMAS DE
INFORMAÇÃO30
30SISTEMAS DEINFORMAÇÃO
3030
3030SISTEMAS DE
INFORMAÇÃO3030
Pessoa
Professorprivate int _anoDeAdmissao;private String _departamento;
private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
// 5 pares de mét. de acessovoid imprimeDados();
// 2 pares de mét. de acessovoid imprimeDados();
ProfessorDoutor
// 2 pares de mét. de acessovoid imprimeDados();
Aluno
// 2 pares de mét. de acessovoid imprimeDados();
public void imprimeDados(){
System.out.println(“Nome: “ + _nome);
System.out.println(“Nr USP: “ + _nrUsp);
System.out.println(“CPF: “ + _cpf);
System.out.println(“RG: “ + _rg);
System.out.println(“Sexo: “ + _sexo);
}
public void imprimeDados(){
super.imprimeDados();
System.out.println(“Ano de admissão: “ + _anoDeAdmissao);
System.out.println(“Departamento: “ + _departamento);
}
public void imprimeDados(){
super.imprimeDados();
System.out.println(“Ano de obtenção do título de Doutor: “ + _anoObtencaoDoutorado);
System.out.println(“Instituição do Doutorado: “ + _instituicaoDoutorado);
}
SISTEMAS DEINFORMAÇÃO
3131
3131SISTEMAS DE
INFORMAÇÃO31
3131
31SISTEMAS DEINFORMAÇÃO
3131SISTEMAS DE
INFORMAÇÃO31
3131
31SISTEMAS DEINFORMAÇÃO
3131
3131SISTEMAS DE
INFORMAÇÃO31
31SISTEMAS DEINFORMAÇÃO
3131
31
SISTEMAS DEINFORMAÇÃO
3131
3131 31SISTEMAS DE
INFORMAÇÃO31
3131
31SISTEMAS DEINFORMAÇÃO
3131SISTEMAS DE
INFORMAÇÃO31
3131
31SISTEMAS DEINFORMAÇÃO
3131
3131SISTEMAS DE
INFORMAÇÃO31
31SISTEMAS DEINFORMAÇÃO
3131
3131SISTEMAS DE
INFORMAÇÃO3131
Pessoa
Professorprivate int _anoDeAdmissao;private String _departamento;
private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
private long _nrUsp;private String _rg;private long _cpf;
private String _nome;private char _sexo;
// 5 pares de mét. de acessovoid imprimeDados();
// 2 pares de mét. de acessovoid imprimeDados();
ProfessorDoutor
// 2 pares de mét. de acessovoid imprimeDados();
Aluno
// 2 pares de mét. de acessovoid imprimeDados();
ProfessorDoutor p1 = new ProfessorDoutor();(...)
�
p1.imprimeDados();
SISTEMAS DEINFORMAÇÃO
3232
3232SISTEMAS DE
INFORMAÇÃO32
3232
32SISTEMAS DEINFORMAÇÃO
3232SISTEMAS DE
INFORMAÇÃO32
3232
32SISTEMAS DEINFORMAÇÃO
3232
3232SISTEMAS DE
INFORMAÇÃO32
32SISTEMAS DEINFORMAÇÃO
3232
32
SISTEMAS DEINFORMAÇÃO
3232
3232 32SISTEMAS DE
INFORMAÇÃO32
3232
32SISTEMAS DEINFORMAÇÃO
3232SISTEMAS DE
INFORMAÇÃO32
3232
32SISTEMAS DEINFORMAÇÃO
3232
3232SISTEMAS DE
INFORMAÇÃO32
32SISTEMAS DEINFORMAÇÃO
3232
3232SISTEMAS DE
INFORMAÇÃO3232
Pessoa
Professorprivate int _anoDeAdmissao;private String _departamento;
private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
// 5 pares de mét. de acessovoid imprimeDados();
// 2 pares de mét. de acessovoid imprimeDados();
ProfessorDoutor
// 2 pares de mét. de acessovoid imprimeDados();
Aluno
// 2 pares de mét. de acessovoid imprimeDados();
Professor p2 = new Professor();(...)
�
p2.imprimeDados();
SISTEMAS DEINFORMAÇÃO
3333
3333SISTEMAS DE
INFORMAÇÃO33
3333
33SISTEMAS DEINFORMAÇÃO
3333SISTEMAS DE
INFORMAÇÃO33
3333
33SISTEMAS DEINFORMAÇÃO
3333
3333SISTEMAS DE
INFORMAÇÃO33
33SISTEMAS DEINFORMAÇÃO
3333
33
SISTEMAS DEINFORMAÇÃO
3333
3333 33SISTEMAS DE
INFORMAÇÃO33
3333
33SISTEMAS DEINFORMAÇÃO
3333SISTEMAS DE
INFORMAÇÃO33
3333
33SISTEMAS DEINFORMAÇÃO
3333
3333SISTEMAS DE
INFORMAÇÃO33
33SISTEMAS DEINFORMAÇÃO
3333
3333SISTEMAS DE
INFORMAÇÃO3333
Pessoa
Professorprivate int _anoDeAdmissao;private String _departamento;
private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
// 5 pares de mét. de acessovoid imprimeDados();
// 2 pares de mét. de acessovoid imprimeDados();
ProfessorDoutor
// 2 pares de mét. de acessovoid imprimeDados();
Aluno
// 2 pares de mét. de acessovoid imprimeDados();
Pessoa p3 = new Pessoa();(...)
�
p3.imprimeDados();
SISTEMAS DEINFORMAÇÃO
3434
3434SISTEMAS DE
INFORMAÇÃO34
3434
34SISTEMAS DEINFORMAÇÃO
3434SISTEMAS DE
INFORMAÇÃO34
3434
34SISTEMAS DEINFORMAÇÃO
3434
3434SISTEMAS DE
INFORMAÇÃO34
34SISTEMAS DEINFORMAÇÃO
3434
34
SISTEMAS DEINFORMAÇÃO
3434
3434 34SISTEMAS DE
INFORMAÇÃO34
3434
34SISTEMAS DEINFORMAÇÃO
3434SISTEMAS DE
INFORMAÇÃO34
3434
34SISTEMAS DEINFORMAÇÃO
3434
3434SISTEMAS DE
INFORMAÇÃO34
34SISTEMAS DEINFORMAÇÃO
3434
3434SISTEMAS DE
INFORMAÇÃO3434
Pessoa
Professorprivate int _anoDeAdmissao;private String _departamento;
private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
// 5 pares de mét. de acessovoid imprimeDados();
// 2 pares de mét. de acessovoid imprimeDados();
ProfessorDoutor
// 2 pares de mét. de acessovoid imprimeDados();
Aluno
// 2 pares de mét. de acessovoid imprimeDados();
Aluno p4 = new Aluno();(...)
�
p4.imprimeDados();
SISTEMAS DEINFORMAÇÃO
3535
3535SISTEMAS DE
INFORMAÇÃO35
3535
35SISTEMAS DEINFORMAÇÃO
3535SISTEMAS DE
INFORMAÇÃO35
3535
35SISTEMAS DEINFORMAÇÃO
3535
3535SISTEMAS DE
INFORMAÇÃO35
35SISTEMAS DEINFORMAÇÃO
3535
35
SISTEMAS DEINFORMAÇÃO
3535
3535 35SISTEMAS DE
INFORMAÇÃO35
3535
35SISTEMAS DEINFORMAÇÃO
3535SISTEMAS DE
INFORMAÇÃO35
3535
35SISTEMAS DEINFORMAÇÃO
3535
3535SISTEMAS DE
INFORMAÇÃO35
35SISTEMAS DEINFORMAÇÃO
3535
3535SISTEMAS DE
INFORMAÇÃO3535
Pessoa
Professorprivate int _anoDeAdmissao;private String _departamento;
private int _anoObtencaoDoutorado;private String _instituicaoDoutorado;
private int _anoDeIngresso;
private String _curso;
private long _nrUsp;private String _rg;
private long _cpf;private String _nome;private char _sexo;
// 5 pares de mét. de acessovoid imprimeDados();
// 2 pares de mét. de acessovoid imprimeDados();
ProfessorDoutor
// 2 pares de mét. de acessovoid imprimeDados();
Aluno
// 2 pares de mét. de acessovoid imprimeDados();
Aluno p4 = new Aluno();(...)
�
p4.imprimeDados();
UMLUnified
Modeling Language
SISTEMAS DEINFORMAÇÃO
3636
3636SISTEMAS DE
INFORMAÇÃO36
3636
36SISTEMAS DEINFORMAÇÃO
3636SISTEMAS DE
INFORMAÇÃO36
3636
36SISTEMAS DEINFORMAÇÃO
3636
3636SISTEMAS DE
INFORMAÇÃO36
36SISTEMAS DEINFORMAÇÃO
3636
36
SISTEMAS DEINFORMAÇÃO
3636
3636 36SISTEMAS DE
INFORMAÇÃO36
3636
36SISTEMAS DEINFORMAÇÃO
3636SISTEMAS DE
INFORMAÇÃO36
3636
36SISTEMAS DEINFORMAÇÃO
3636
3636SISTEMAS DE
INFORMAÇÃO36
36SISTEMAS DEINFORMAÇÃO
3636
3636SISTEMAS DE
INFORMAÇÃO3636
Observações• As subclasses podem acrescentar novos
métodos:– Ex: métodos de acesso aos atributos específicos da
subclasse– Ex: novas funcionalidades típicas daquela subclasse– Ex: sobrecarregar métodos da superclasse (mesmo nome,
nova assinatura)
• As subclasses podem redefinir métodos da superclasse com a mesma assinatura
– Ex: imprimeDados– Não precisa necessariamente chamar o método da
superclasse
SISTEMAS DEINFORMAÇÃO
3737
3737SISTEMAS DE
INFORMAÇÃO37
3737
37SISTEMAS DEINFORMAÇÃO
3737SISTEMAS DE
INFORMAÇÃO37
3737
37SISTEMAS DEINFORMAÇÃO
3737
3737SISTEMAS DE
INFORMAÇÃO37
37SISTEMAS DEINFORMAÇÃO
3737
37
SISTEMAS DEINFORMAÇÃO
3737
3737 37SISTEMAS DE
INFORMAÇÃO37
3737
37SISTEMAS DEINFORMAÇÃO
3737SISTEMAS DE
INFORMAÇÃO37
3737
37SISTEMAS DEINFORMAÇÃO
3737
3737SISTEMAS DE
INFORMAÇÃO37
37SISTEMAS DEINFORMAÇÃO
3737
3737SISTEMAS DE
INFORMAÇÃO3737
Exemploclass Pessoa{
(...)
�
void quemEVoce() { System.out.println(“Sou uma pessoa”); }
}
class Aluno extends Pessoa{(...)
�
void quemEVoce() { System.out.println(“Sou um aluno”); }
}
class Professor extends Pessoa{(...)
�
void quemEVoce() { System.out.println(“Sou um professor”); }
}
class ProfessorDoutor extends Professor{(...)
�
void quemEVoce() { System.out.println(“Sou um professor doutor”); }
}
SISTEMAS DEINFORMAÇÃO
3838
3838SISTEMAS DE
INFORMAÇÃO38
3838
38SISTEMAS DEINFORMAÇÃO
3838SISTEMAS DE
INFORMAÇÃO38
3838
38SISTEMAS DEINFORMAÇÃO
3838
3838SISTEMAS DE
INFORMAÇÃO38
38SISTEMAS DEINFORMAÇÃO
3838
38
SISTEMAS DEINFORMAÇÃO
3838
3838 38SISTEMAS DE
INFORMAÇÃO38
3838
38SISTEMAS DEINFORMAÇÃO
3838SISTEMAS DE
INFORMAÇÃO38
3838
38SISTEMAS DEINFORMAÇÃO
3838
3838SISTEMAS DE
INFORMAÇÃO38
38SISTEMAS DEINFORMAÇÃO
3838
3838SISTEMAS DE
INFORMAÇÃO3838
Exemploclass Pessoa{
(...)
�
void quemEVoce() { System.out.println(“Sou uma pessoa”); }
}
class Aluno extends Pessoa{(...)
�
void quemEVoce() { System.out.println(“Sou um aluno”); }
}
class Professor extends Pessoa{(...)
�
void quemEVoce() { System.out.println(“Sou um professor”); }
}
class ProfessorDoutor extends Professor{(...)
�
void quemEVoce() { System.out.println(“Sou um professor doutor”); }
}
Pessoa p1 = new Pessoa(); p1.quemEVoce();
Aluno p2 = new Aluno(); p2.quemEVoce();
Professor p3 = new Professor(); p3.quemEVoce();
ProfessorDoutor p4 = new ProfessorDoutor(); p4.quemEVoce();
SISTEMAS DEINFORMAÇÃO
3939
3939SISTEMAS DE
INFORMAÇÃO39
3939
39SISTEMAS DEINFORMAÇÃO
3939SISTEMAS DE
INFORMAÇÃO39
3939
39SISTEMAS DEINFORMAÇÃO
3939
3939SISTEMAS DE
INFORMAÇÃO39
39SISTEMAS DEINFORMAÇÃO
3939
39
SISTEMAS DEINFORMAÇÃO
3939
3939 39SISTEMAS DE
INFORMAÇÃO39
3939
39SISTEMAS DEINFORMAÇÃO
3939SISTEMAS DE
INFORMAÇÃO39
3939
39SISTEMAS DEINFORMAÇÃO
3939
3939SISTEMAS DE
INFORMAÇÃO39
39SISTEMAS DEINFORMAÇÃO
3939
3939SISTEMAS DE
INFORMAÇÃO3939
Exemploclass Pessoa{
(...)
�
void quemEVoce() { System.out.println(“Sou uma pessoa”); }
}
class Aluno extends Pessoa{(...)
�
void quemEVoce() { System.out.println(“Sou um aluno”); }
}
class Professor extends Pessoa{(...)
�
void quemEVoce() { System.out.println(“Sou um professor”); }
}
class ProfessorDoutor extends Professor{(...)
�
void quemEVoce() { System.out.println(“Sou um professor doutor”); }
}
Pessoa p1 = new Pessoa(); p1.quemEVoce(); // Sou uma pessoa
Aluno p2 = new Aluno(); p2.quemEVoce(); // Sou um aluno
Professor p3 = new Professor(); p3.quemEVoce(); // Sou um professor
ProfessorDoutor p4 = new ProfessorDoutor(); p4.quemEVoce(); // Sou um professor doutor
SISTEMAS DEINFORMAÇÃO
4040
4040SISTEMAS DE
INFORMAÇÃO40
4040
40SISTEMAS DEINFORMAÇÃO
4040SISTEMAS DE
INFORMAÇÃO40
4040
40SISTEMAS DEINFORMAÇÃO
4040
4040SISTEMAS DE
INFORMAÇÃO40
40SISTEMAS DEINFORMAÇÃO
4040
40
SISTEMAS DEINFORMAÇÃO
4040
4040 40SISTEMAS DE
INFORMAÇÃO40
4040
40SISTEMAS DEINFORMAÇÃO
4040SISTEMAS DE
INFORMAÇÃO40
4040
40SISTEMAS DEINFORMAÇÃO
4040
4040SISTEMAS DE
INFORMAÇÃO40
40SISTEMAS DEINFORMAÇÃO
4040
4040SISTEMAS DE
INFORMAÇÃO4040
Observações
• A subclasse pode sobrecarregar/sobrepor métodos de mesmo nome com diferentes parâmetros
• Ex:– Classe Pessoa tem o método
• void alteraDadosUspianos(long nrUsp);– Classe Aluno tem o método
• void alteraDadosUspianos(long nrUsp, String curso);– Os dois métodos podem ser usados no filho!
SISTEMAS DEINFORMAÇÃO
4141
4141SISTEMAS DE
INFORMAÇÃO41
4141
41SISTEMAS DEINFORMAÇÃO
4141SISTEMAS DE
INFORMAÇÃO41
4141
41SISTEMAS DEINFORMAÇÃO
4141
4141SISTEMAS DE
INFORMAÇÃO41
41SISTEMAS DEINFORMAÇÃO
4141
41
SISTEMAS DEINFORMAÇÃO
4141
4141 41SISTEMAS DE
INFORMAÇÃO41
4141
41SISTEMAS DEINFORMAÇÃO
4141SISTEMAS DE
INFORMAÇÃO41
4141
41SISTEMAS DEINFORMAÇÃO
4141
4141SISTEMAS DE
INFORMAÇÃO41
41SISTEMAS DEINFORMAÇÃO
4141
4141SISTEMAS DE
INFORMAÇÃO4141
import java.lang.String;
public class Pessoa {long nusp;String x;
void altera(long nusp) {this.nusp = nusp;
}}
import java.lang.String;
public class Aluno extends Pessoa{void altera(long nusp, String x) {
this.nusp = nusp;this.x = x;
}
public static void main(String[] args) {Aluno a = new Aluno();System.out.println(a.nusp);System.out.println(a.x);a.altera(12);System.out.println(a.nusp);System.out.println(a.x);a.altera(10,"ei");System.out.println(a.nusp);System.out.println(a.x);
}}
SISTEMAS DEINFORMAÇÃO
4242
4242SISTEMAS DE
INFORMAÇÃO42
4242
42SISTEMAS DEINFORMAÇÃO
4242SISTEMAS DE
INFORMAÇÃO42
4242
42SISTEMAS DEINFORMAÇÃO
4242
4242SISTEMAS DE
INFORMAÇÃO42
42SISTEMAS DEINFORMAÇÃO
4242
42
SISTEMAS DEINFORMAÇÃO
4242
4242 42SISTEMAS DE
INFORMAÇÃO42
4242
42SISTEMAS DEINFORMAÇÃO
4242SISTEMAS DE
INFORMAÇÃO42
4242
42SISTEMAS DEINFORMAÇÃO
4242
4242SISTEMAS DE
INFORMAÇÃO42
42SISTEMAS DEINFORMAÇÃO
4242
4242SISTEMAS DE
INFORMAÇÃO4242
import java.lang.String;
public class Pessoa {long nusp;String x;
void altera(long nusp) {this.nusp = nusp;
}}
import java.lang.String;
public class Aluno extends Pessoa{void altera(long nusp, String x) {
this.nusp = nusp;this.x = x;
}
public static void main(String[] args) {Aluno a = new Aluno();System.out.println(a.nusp);System.out.println(a.x);a.altera(12);System.out.println(a.nusp);System.out.println(a.x);a.altera(10,"ei");System.out.println(a.nusp);System.out.println(a.x);
}}
0null12null10ei
Saída
SISTEMAS DEINFORMAÇÃO
4343
4343SISTEMAS DE
INFORMAÇÃO43
4343
43SISTEMAS DEINFORMAÇÃO
4343SISTEMAS DE
INFORMAÇÃO43
4343
43SISTEMAS DEINFORMAÇÃO
4343
4343SISTEMAS DE
INFORMAÇÃO43
43SISTEMAS DEINFORMAÇÃO
4343
43
SISTEMAS DEINFORMAÇÃO
4343
4343 43SISTEMAS DE
INFORMAÇÃO43
4343
43SISTEMAS DEINFORMAÇÃO
4343SISTEMAS DE
INFORMAÇÃO43
4343
43SISTEMAS DEINFORMAÇÃO
4343
4343SISTEMAS DE
INFORMAÇÃO43
43SISTEMAS DEINFORMAÇÃO
4343
4343SISTEMAS DE
INFORMAÇÃO4343
class Pessoa
{Pessoa(long nrUsp, String rg, long cpf, String nome, char sexo)
�
{_nrUsp = nrUsp;_rg = rg;_cpf = cpf;_nome = nome;_sexo = sexo;
}(...)
�
}
class Aluno extends Pessoa{Aluno(long nrUsp, String rg, long cpf, String nome, char sexo, int anoIngresso,
String curso)
�
{?
_anoDeIngresso = anoIngresso;_curso = curso;
}
}
Construtores
SISTEMAS DEINFORMAÇÃO
4444
4444SISTEMAS DE
INFORMAÇÃO44
4444
44SISTEMAS DEINFORMAÇÃO
4444SISTEMAS DE
INFORMAÇÃO44
4444
44SISTEMAS DEINFORMAÇÃO
4444
4444SISTEMAS DE
INFORMAÇÃO44
44SISTEMAS DEINFORMAÇÃO
4444
44
SISTEMAS DEINFORMAÇÃO
4444
4444 44SISTEMAS DE
INFORMAÇÃO44
4444
44SISTEMAS DEINFORMAÇÃO
4444SISTEMAS DE
INFORMAÇÃO44
4444
44SISTEMAS DEINFORMAÇÃO
4444
4444SISTEMAS DE
INFORMAÇÃO44
44SISTEMAS DEINFORMAÇÃO
4444
4444SISTEMAS DE
INFORMAÇÃO4444
class Pessoa
{Pessoa(long nrUsp, String rg, long cpf, String nome, char sexo)
�
{_nrUsp = nrUsp;_rg = rg;_cpf = cpf;_nome = nome;_sexo = sexo;
}(...)
�
}
class Aluno extends Pessoa{Aluno(long nrUsp, String rg, long cpf, String nome, char sexo, int anoIngresso,
String curso)
�
{ super(nrUsp, rg, cpf, nome, sexo); _anoDeIngresso = anoIngresso; _curso = curso;}
}
Construtores
Deve necessariamente ser o primeiro comando.
SISTEMAS DEINFORMAÇÃO
4545
4545SISTEMAS DE
INFORMAÇÃO45
4545
45SISTEMAS DEINFORMAÇÃO
4545SISTEMAS DE
INFORMAÇÃO45
4545
45SISTEMAS DEINFORMAÇÃO
4545
4545SISTEMAS DE
INFORMAÇÃO45
45SISTEMAS DEINFORMAÇÃO
4545
45
SISTEMAS DEINFORMAÇÃO
4545
4545 45SISTEMAS DE
INFORMAÇÃO45
4545
45SISTEMAS DEINFORMAÇÃO
4545SISTEMAS DE
INFORMAÇÃO45
4545
45SISTEMAS DEINFORMAÇÃO
4545
4545SISTEMAS DE
INFORMAÇÃO45
45SISTEMAS DEINFORMAÇÃO
4545
4545SISTEMAS DE
INFORMAÇÃO4545
class Professor extends Pessoa{Professor(long nrUsp, String rg, long cpf, String nome, char sexo, int
anoAdmissao, String dpto)
�
{super(nrUsp, rg, cpf, nome, sexo);
_anoDeAdmissao = anoAdmissao;_departamento = dpto;
}
}
class ProfessorDoutor extends Professor{ProfessorDoutor(long nrUsp, String rg, long cpf, String nome, char sexo, int
anoAdmissao, String dpto, int anoDoutorado, String instituicaoDoutorado)
�
{?
_anoObtencaoDoutorado = anoDoutorado;_instituicaoDoutorado = instituicaoDoutorado;
}
}
Construtores
SISTEMAS DEINFORMAÇÃO
4646
4646SISTEMAS DE
INFORMAÇÃO46
4646
46SISTEMAS DEINFORMAÇÃO
4646SISTEMAS DE
INFORMAÇÃO46
4646
46SISTEMAS DEINFORMAÇÃO
4646
4646SISTEMAS DE
INFORMAÇÃO46
46SISTEMAS DEINFORMAÇÃO
4646
46
SISTEMAS DEINFORMAÇÃO
4646
4646 46SISTEMAS DE
INFORMAÇÃO46
4646
46SISTEMAS DEINFORMAÇÃO
4646SISTEMAS DE
INFORMAÇÃO46
4646
46SISTEMAS DEINFORMAÇÃO
4646
4646SISTEMAS DE
INFORMAÇÃO46
46SISTEMAS DEINFORMAÇÃO
4646
4646SISTEMAS DE
INFORMAÇÃO4646
class Professor extends Pessoa{Professor(long nrUsp, String rg, long cpf, String nome, char sexo, int
anoAdmissao, String dpto)
�
{super(nrUsp, rg, cpf, nome, sexo);
_anoDeAdmissao = anoAdmissao;_departamento = dpto;
}
}
class ProfessorDoutor extends Professor{ProfessorDoutor(long nrUsp, String rg, long cpf, String nome, char sexo, int
anoAdmissao, String dpto, int anoDoutorado, String instituicaoDoutorado)
�
{super(nrUsp, rg, cpf, nome, sexo, anoAdmissao, dpto);
_anoObtencaoDoutorado = anoDoutorado;_instituicaoDoutorado = instituicaoDoutorado;
}
}
Construtores
SISTEMAS DEINFORMAÇÃO
4747
4747SISTEMAS DE
INFORMAÇÃO47
4747
47SISTEMAS DEINFORMAÇÃO
4747SISTEMAS DE
INFORMAÇÃO47
4747
47SISTEMAS DEINFORMAÇÃO
4747
4747SISTEMAS DE
INFORMAÇÃO47
47SISTEMAS DEINFORMAÇÃO
4747
47
SISTEMAS DEINFORMAÇÃO
4747
4747 47SISTEMAS DE
INFORMAÇÃO47
4747
47SISTEMAS DEINFORMAÇÃO
4747SISTEMAS DE
INFORMAÇÃO47
4747
47SISTEMAS DEINFORMAÇÃO
4747
4747SISTEMAS DE
INFORMAÇÃO47
47SISTEMAS DEINFORMAÇÃO
4747
4747SISTEMAS DE
INFORMAÇÃO4747
Vantagens de Herança• Modularização (programa separado em
módulos estáveis)
�
• Reuso – Como no caso de Pessoa– APIs Java (você pode expandir!!!)
�
• Tipagem (relação transitiva)
�
– Aluno É uma Pessoa– Professor É uma Pessoa– ProfessorDoutor É um Professor, e também É uma
Pessoa– → permite agrupamentos
SISTEMAS DEINFORMAÇÃO
4848
4848SISTEMAS DE
INFORMAÇÃO48
4848
48SISTEMAS DEINFORMAÇÃO
4848SISTEMAS DE
INFORMAÇÃO48
4848
48SISTEMAS DEINFORMAÇÃO
4848
4848SISTEMAS DE
INFORMAÇÃO48
48SISTEMAS DEINFORMAÇÃO
4848
48
SISTEMAS DEINFORMAÇÃO
4848
4848 48SISTEMAS DE
INFORMAÇÃO48
4848
48SISTEMAS DEINFORMAÇÃO
4848SISTEMAS DE
INFORMAÇÃO48
4848
48SISTEMAS DEINFORMAÇÃO
4848
4848SISTEMAS DE
INFORMAÇÃO48
48SISTEMAS DEINFORMAÇÃO
4848
4848SISTEMAS DE
INFORMAÇÃO4848
class ComunidadeAcademica
{Pessoa [] comunidade = new Pessoa [5000];int nrPessoas = 0;void inserePessoa(Pessoa p)
�
{comunidade[nrPessoas] = p;nrPessoas++;
}Pessoa buscaPessoa (int nrUsp)
�
{int i = 0;while (i < nrPessoas){
if (comunidade[i].obtemNrUsp() == nrUsp)
�
return comunidade[i];i++;
}System.out.println("Pessoa não encontrada");return null;
}void imprimeDados(){
for (int i=0; i<nrPessoas; i++)
�
comunidade[i].imprimeDados();}
}
ComunidadeAcademica usp = new ComunidadeAcademica();
Aluno p1 = new Aluno(55, ... , “SI”);
usp.inserePessoa(p1);
Professor p2 = new Professor(51, ..., “EACH”);
usp.inserePessoa(p2);
ProfessorDoutor p3 = new ProfessorDoutor(67, ....., “USP”);
usp.inserePessoa(p3);
usp.buscaPessoa(51).quemEVoce();
usp.imprimeDados();
SISTEMAS DEINFORMAÇÃO
4949
4949SISTEMAS DE
INFORMAÇÃO49
4949
49SISTEMAS DEINFORMAÇÃO
4949SISTEMAS DE
INFORMAÇÃO49
4949
49SISTEMAS DEINFORMAÇÃO
4949
4949SISTEMAS DE
INFORMAÇÃO49
49SISTEMAS DEINFORMAÇÃO
4949
49
SISTEMAS DEINFORMAÇÃO
4949
4949 49SISTEMAS DE
INFORMAÇÃO49
4949
49SISTEMAS DEINFORMAÇÃO
4949SISTEMAS DE
INFORMAÇÃO49
4949
49SISTEMAS DEINFORMAÇÃO
4949
4949SISTEMAS DE
INFORMAÇÃO49
49SISTEMAS DEINFORMAÇÃO
4949
4949SISTEMAS DE
INFORMAÇÃO4949
class ComunidadeAcademica
{Pessoa [] comunidade = new Pessoa [5000];int nrPessoas = 0;void inserePessoa(Pessoa p)v{
comunidade[nrPessoas] = p;nrPessoas++;
}Pessoa buscaPessoa (int nrUsp)P{
int i = 0;while (i < nrPessoas){
if (comunidade[i].obtemNrUsp() == nrUsp)ireturn comunidade[i];
i++;}System.out.println("Pessoa não encontrada");return null;
}void imprimeDados(){
for (int i=0; i<nrPessoas; i++)fcomunidade[i].imprimeDados();
}
}
ComunidadeAcademica usp = new ComunidadeAcademica();
Aluno p1 = new Aluno(55, ... , “SI”);
usp.inserePessoa(p1);
Professor p2 = new Professor(51, ..., “EACH”);
usp.inserePessoa(p2);
ProfessorDoutor p3 = new ProfessorDoutor(67, ....., “USP”);
usp.inserePessoa(p3);
usp.buscaPessoa(51).quemEVoce();
usp.imprimeDados();
SISTEMAS DEINFORMAÇÃO
5050
5050SISTEMAS DE
INFORMAÇÃO50
5050
50SISTEMAS DEINFORMAÇÃO
5050SISTEMAS DE
INFORMAÇÃO50
5050
50SISTEMAS DEINFORMAÇÃO
5050
5050SISTEMAS DE
INFORMAÇÃO50
50SISTEMAS DEINFORMAÇÃO
5050
50
SISTEMAS DEINFORMAÇÃO
5050
5050 50SISTEMAS DE
INFORMAÇÃO50
5050
50SISTEMAS DEINFORMAÇÃO
5050SISTEMAS DE
INFORMAÇÃO50
5050
50SISTEMAS DEINFORMAÇÃO
5050
5050SISTEMAS DE
INFORMAÇÃO50
50SISTEMAS DEINFORMAÇÃO
5050
5050SISTEMAS DE
INFORMAÇÃO5050
Hierarquia de Classes
SISTEMAS DEINFORMAÇÃO
5151
5151SISTEMAS DE
INFORMAÇÃO51
5151
51SISTEMAS DEINFORMAÇÃO
5151SISTEMAS DE
INFORMAÇÃO51
5151
51SISTEMAS DEINFORMAÇÃO
5151
5151SISTEMAS DE
INFORMAÇÃO51
51SISTEMAS DEINFORMAÇÃO
5151
51
SISTEMAS DEINFORMAÇÃO
5151
5151 51SISTEMAS DE
INFORMAÇÃO51
5151
51SISTEMAS DEINFORMAÇÃO
5151SISTEMAS DE
INFORMAÇÃO51
5151
51SISTEMAS DEINFORMAÇÃO
5151
5151SISTEMAS DE
INFORMAÇÃO51
51SISTEMAS DEINFORMAÇÃO
5151
5151SISTEMAS DE
INFORMAÇÃO5151
Hierarquia de Classes
É um tipo
de
SISTEMAS DEINFORMAÇÃO
5252
5252SISTEMAS DE
INFORMAÇÃO52
5252
52SISTEMAS DEINFORMAÇÃO
5252SISTEMAS DE
INFORMAÇÃO52
5252
52SISTEMAS DEINFORMAÇÃO
5252
5252SISTEMAS DE
INFORMAÇÃO52
52SISTEMAS DEINFORMAÇÃO
5252
52
SISTEMAS DEINFORMAÇÃO
5252
5252 52SISTEMAS DE
INFORMAÇÃO52
5252
52SISTEMAS DEINFORMAÇÃO
5252SISTEMAS DE
INFORMAÇÃO52
5252
52SISTEMAS DEINFORMAÇÃO
5252
5252SISTEMAS DE
INFORMAÇÃO52
52SISTEMAS DEINFORMAÇÃO
5252
5252SISTEMAS DE
INFORMAÇÃO5252
Hierarquia
É um tipode
É um tipode
É um tipode
Espécie
Filo
Reino
SISTEMAS DEINFORMAÇÃO
5353
5353SISTEMAS DE
INFORMAÇÃO53
5353
53SISTEMAS DEINFORMAÇÃO
5353SISTEMAS DE
INFORMAÇÃO53
5353
53SISTEMAS DEINFORMAÇÃO
5353
5353SISTEMAS DE
INFORMAÇÃO53
53SISTEMAS DEINFORMAÇÃO
5353
53
SISTEMAS DEINFORMAÇÃO
5353
5353 53SISTEMAS DE
INFORMAÇÃO53
5353
53SISTEMAS DEINFORMAÇÃO
5353SISTEMAS DE
INFORMAÇÃO53
5353
53SISTEMAS DEINFORMAÇÃO
5353
5353SISTEMAS DE
INFORMAÇÃO53
53SISTEMAS DEINFORMAÇÃO
5353
5353SISTEMAS DE
INFORMAÇÃO5353
Hierarquia ERRADA
É um tipode
É um tipode
É um tipode
Espécie
Filo
Reino
Não há a relação“É um tipo de”
SISTEMAS DEINFORMAÇÃO
5454
5454SISTEMAS DE
INFORMAÇÃO54
5454
54SISTEMAS DEINFORMAÇÃO
5454SISTEMAS DE
INFORMAÇÃO54
5454
54SISTEMAS DEINFORMAÇÃO
5454
5454SISTEMAS DE
INFORMAÇÃO54
54SISTEMAS DEINFORMAÇÃO
5454
54
SISTEMAS DEINFORMAÇÃO
5454
5454 54SISTEMAS DE
INFORMAÇÃO54
5454
54SISTEMAS DEINFORMAÇÃO
5454SISTEMAS DE
INFORMAÇÃO54
5454
54SISTEMAS DEINFORMAÇÃO
5454
5454SISTEMAS DE
INFORMAÇÃO54
54SISTEMAS DEINFORMAÇÃO
5454
5454SISTEMAS DE
INFORMAÇÃO5454
Especificadores de acesso
• final class X:
SISTEMAS DEINFORMAÇÃO
5555
5555SISTEMAS DE
INFORMAÇÃO55
5555
55SISTEMAS DEINFORMAÇÃO
5555SISTEMAS DE
INFORMAÇÃO55
5555
55SISTEMAS DEINFORMAÇÃO
5555
5555SISTEMAS DE
INFORMAÇÃO55
55SISTEMAS DEINFORMAÇÃO
5555
55
SISTEMAS DEINFORMAÇÃO
5555
5555 55SISTEMAS DE
INFORMAÇÃO55
5555
55SISTEMAS DEINFORMAÇÃO
5555SISTEMAS DE
INFORMAÇÃO55
5555
55SISTEMAS DEINFORMAÇÃO
5555
5555SISTEMAS DE
INFORMAÇÃO55
55SISTEMAS DEINFORMAÇÃO
5555
5555SISTEMAS DE
INFORMAÇÃO5555
Especificadores de acesso
• final class X: X não pode ser estendida
SISTEMAS DEINFORMAÇÃO
5656
5656SISTEMAS DE
INFORMAÇÃO56
5656
56SISTEMAS DEINFORMAÇÃO
5656SISTEMAS DE
INFORMAÇÃO56
5656
56SISTEMAS DEINFORMAÇÃO
5656
5656SISTEMAS DE
INFORMAÇÃO56
56SISTEMAS DEINFORMAÇÃO
5656
56
SISTEMAS DEINFORMAÇÃO
5656
5656 56SISTEMAS DE
INFORMAÇÃO56
5656
56SISTEMAS DEINFORMAÇÃO
5656SISTEMAS DE
INFORMAÇÃO56
5656
56SISTEMAS DEINFORMAÇÃO
5656
5656SISTEMAS DE
INFORMAÇÃO56
56SISTEMAS DEINFORMAÇÃO
5656
5656SISTEMAS DE
INFORMAÇÃO5656
Especificadores de acesso
• final class X: X não pode ser estendida• final em um método:
SISTEMAS DEINFORMAÇÃO
5757
5757SISTEMAS DE
INFORMAÇÃO57
5757
57SISTEMAS DEINFORMAÇÃO
5757SISTEMAS DE
INFORMAÇÃO57
5757
57SISTEMAS DEINFORMAÇÃO
5757
5757SISTEMAS DE
INFORMAÇÃO57
57SISTEMAS DEINFORMAÇÃO
5757
57
SISTEMAS DEINFORMAÇÃO
5757
5757 57SISTEMAS DE
INFORMAÇÃO57
5757
57SISTEMAS DEINFORMAÇÃO
5757SISTEMAS DE
INFORMAÇÃO57
5757
57SISTEMAS DEINFORMAÇÃO
5757
5757SISTEMAS DE
INFORMAÇÃO57
57SISTEMAS DEINFORMAÇÃO
5757
5757SISTEMAS DE
INFORMAÇÃO5757
Especificadores de acesso
• final class X: X não pode ser estendida• final em um método: o método não pode ser
redefinido nas subclasses
SISTEMAS DEINFORMAÇÃO
5858
5858SISTEMAS DE
INFORMAÇÃO58
5858
58SISTEMAS DEINFORMAÇÃO
5858SISTEMAS DE
INFORMAÇÃO58
5858
58SISTEMAS DEINFORMAÇÃO
5858
5858SISTEMAS DE
INFORMAÇÃO58
58SISTEMAS DEINFORMAÇÃO
5858
58
SISTEMAS DEINFORMAÇÃO
5858
5858 58SISTEMAS DE
INFORMAÇÃO58
5858
58SISTEMAS DEINFORMAÇÃO
5858SISTEMAS DE
INFORMAÇÃO58
5858
58SISTEMAS DEINFORMAÇÃO
5858
5858SISTEMAS DE
INFORMAÇÃO58
58SISTEMAS DEINFORMAÇÃO
5858
5858SISTEMAS DE
INFORMAÇÃO5858
Especificadores de acesso
• final class X: X não pode ser estendida• final em um método: o método não pode ser
redefinidos nas subclasses
• class X: X pode ser vista só dentro do pacote
• public class X: X pode ser vista por todos
SISTEMAS DEINFORMAÇÃO
5959
5959SISTEMAS DE
INFORMAÇÃO59
5959
59SISTEMAS DEINFORMAÇÃO
5959SISTEMAS DE
INFORMAÇÃO59
5959
59SISTEMAS DEINFORMAÇÃO
5959
5959SISTEMAS DE
INFORMAÇÃO59
59SISTEMAS DEINFORMAÇÃO
5959
59
SISTEMAS DEINFORMAÇÃO
5959
5959 59SISTEMAS DE
INFORMAÇÃO59
5959
59SISTEMAS DEINFORMAÇÃO
5959SISTEMAS DE
INFORMAÇÃO59
5959
59SISTEMAS DEINFORMAÇÃO
5959
5959SISTEMAS DE
INFORMAÇÃO59
59SISTEMAS DEINFORMAÇÃO
5959
5959SISTEMAS DE
INFORMAÇÃO5959
public class ExMatematica2 {public final static double pi = 3.141592;
public final static double quadrado(double x){return x*x;
}
public static double cubo(double x){return x*x*x;
}
public final static double perimetro(double raio){return 2*pi*raio;
}}
SISTEMAS DEINFORMAÇÃO
6060
6060SISTEMAS DE
INFORMAÇÃO60
6060
60SISTEMAS DEINFORMAÇÃO
6060SISTEMAS DE
INFORMAÇÃO60
6060
60SISTEMAS DEINFORMAÇÃO
6060
6060SISTEMAS DE
INFORMAÇÃO60
60SISTEMAS DEINFORMAÇÃO
6060
60
SISTEMAS DEINFORMAÇÃO
6060
6060 60SISTEMAS DE
INFORMAÇÃO60
6060
60SISTEMAS DEINFORMAÇÃO
6060SISTEMAS DE
INFORMAÇÃO60
6060
60SISTEMAS DEINFORMAÇÃO
6060
6060SISTEMAS DE
INFORMAÇÃO60
60SISTEMAS DEINFORMAÇÃO
6060
6060SISTEMAS DE
INFORMAÇÃO6060
public class ExMatematica2Sub extends ExMatematica2{public final static double pi = 3.1415926;
/* O metodo abaixo nao pode ser redefinido pois na classe original * (ExMatematica2) ele era final. *//*public final static double quadrado(double x){
return x*x;}*/
/* O metodo cubo nao era final na super-classe (ExMatematica2) e, por isso, * pode ser redefinida. */public static double cubo(double x){
double temp = x*x;return temp*x;
}}
?????
SISTEMAS DEINFORMAÇÃO
6161
6161SISTEMAS DE
INFORMAÇÃO61
6161
61SISTEMAS DEINFORMAÇÃO
6161SISTEMAS DE
INFORMAÇÃO61
6161
61SISTEMAS DEINFORMAÇÃO
6161
6161SISTEMAS DE
INFORMAÇÃO61
61SISTEMAS DEINFORMAÇÃO
6161
61
SISTEMAS DEINFORMAÇÃO
6161
6161 61SISTEMAS DE
INFORMAÇÃO61
6161
61SISTEMAS DEINFORMAÇÃO
6161SISTEMAS DE
INFORMAÇÃO61
6161
61SISTEMAS DEINFORMAÇÃO
6161
6161SISTEMAS DE
INFORMAÇÃO61
61SISTEMAS DEINFORMAÇÃO
6161
6161SISTEMAS DE
INFORMAÇÃO6161
public class ExMatematica2Sub extends ExMatematica2{public final static double pi = 3.1415926;
/* O metodo abaixo nao pode ser redefinido pois na classe * original (ExMatematica2) ele era final. *//*public final static double quadrado(double x){
return x*x;}*/
/* O metodo cubo nao era final na super-classe (ExMatematica2) e, por isso, * pode ser redefinida. */public static double cubo(double x){
double temp = x*x;return temp*x;
}}
É constanteapenas dessaclasse
SISTEMAS DEINFORMAÇÃO
6262
6262SISTEMAS DE
INFORMAÇÃO62
6262
62SISTEMAS DEINFORMAÇÃO
6262SISTEMAS DE
INFORMAÇÃO62
6262
62SISTEMAS DEINFORMAÇÃO
6262
6262SISTEMAS DE
INFORMAÇÃO62
62SISTEMAS DEINFORMAÇÃO
6262
62
SISTEMAS DEINFORMAÇÃO
6262
6262 62SISTEMAS DE
INFORMAÇÃO62
6262
62SISTEMAS DEINFORMAÇÃO
6262SISTEMAS DE
INFORMAÇÃO62
6262
62SISTEMAS DEINFORMAÇÃO
6262
6262SISTEMAS DE
INFORMAÇÃO62
62SISTEMAS DEINFORMAÇÃO
6262
6262SISTEMAS DE
INFORMAÇÃO6262
Especificadores de acesso
Acesso public protected sem nada private
Classe Sim Sim Sim Sim
Pacote Sim Sim Sim Não
Subclasse Sim Sim Não Não
Mundo Sim Não Não Não
SISTEMAS DEINFORMAÇÃO
6363
6363SISTEMAS DE
INFORMAÇÃO63
6363
63SISTEMAS DEINFORMAÇÃO
6363SISTEMAS DE
INFORMAÇÃO63
6363
63SISTEMAS DEINFORMAÇÃO
6363
6363SISTEMAS DE
INFORMAÇÃO63
63SISTEMAS DEINFORMAÇÃO
6363
63
SISTEMAS DEINFORMAÇÃO
6363
6363 63SISTEMAS DE
INFORMAÇÃO63
6363
63SISTEMAS DEINFORMAÇÃO
6363SISTEMAS DE
INFORMAÇÃO63
6363
63SISTEMAS DEINFORMAÇÃO
6363
6363SISTEMAS DE
INFORMAÇÃO63
63SISTEMAS DEINFORMAÇÃO
6363
6363SISTEMAS DE
INFORMAÇÃO6363
Especificadores de acesso
Acesso public protected sem nada private
Classe Sim Sim Sim Sim
Pacote Sim Sim Sim Não
Subclasse Sim Sim Não Não
Mundo Sim Não Não Não
protectedindica que o código pode ser acessado somente dentro do pacote ou por uma subclasse de sua classe em outro pacote
SISTEMAS DEINFORMAÇÃO
6464
6464SISTEMAS DE
INFORMAÇÃO64
6464
64SISTEMAS DEINFORMAÇÃO
6464SISTEMAS DE
INFORMAÇÃO64
6464
64SISTEMAS DEINFORMAÇÃO
6464
6464SISTEMAS DE
INFORMAÇÃO64
64SISTEMAS DEINFORMAÇÃO
6464
64
SISTEMAS DEINFORMAÇÃO
6464
6464 64SISTEMAS DE
INFORMAÇÃO64
6464
64SISTEMAS DEINFORMAÇÃO
6464SISTEMAS DE
INFORMAÇÃO64
6464
64SISTEMAS DEINFORMAÇÃO
6464
6464SISTEMAS DE
INFORMAÇÃO64
64SISTEMAS DEINFORMAÇÃO
6464
6464SISTEMAS DE
INFORMAÇÃO6464
Abstract
• abstract class X:– X não pode ser instanciada– Não podemos fazer new X();
• abstract int metodo():– O método é deixado sem código na classe– Cabe aos filhos implementar
• Todo método abstract torna a classe abstract• Nem toda classe abstract possui métodos
abstract– Basta que não desejemos que seja instanciada
SISTEMAS DEINFORMAÇÃO
6565
6565SISTEMAS DE
INFORMAÇÃO65
6565
65SISTEMAS DEINFORMAÇÃO
6565SISTEMAS DE
INFORMAÇÃO65
6565
65SISTEMAS DEINFORMAÇÃO
6565
6565SISTEMAS DE
INFORMAÇÃO65
65SISTEMAS DEINFORMAÇÃO
6565
65
SISTEMAS DEINFORMAÇÃO
6565
6565 65SISTEMAS DE
INFORMAÇÃO65
6565
65SISTEMAS DEINFORMAÇÃO
6565SISTEMAS DE
INFORMAÇÃO65
6565
65SISTEMAS DEINFORMAÇÃO
6565
6565SISTEMAS DE
INFORMAÇÃO65
65SISTEMAS DEINFORMAÇÃO
6565
6565SISTEMAS DE
INFORMAÇÃO6565
class Pessoa {String nome;int RG;Pessoa(String nome, int RG){
this.nome = nome;this.RG = RG;
}
void respirar(){System.out.println("Pessoa respirando.");
}
void dormir(){System.out.println("Pessoa dormindo.");
}}
SISTEMAS DEINFORMAÇÃO
6666
6666SISTEMAS DE
INFORMAÇÃO66
6666
66SISTEMAS DEINFORMAÇÃO
6666SISTEMAS DE
INFORMAÇÃO66
6666
66SISTEMAS DEINFORMAÇÃO
6666
6666SISTEMAS DE
INFORMAÇÃO66
66SISTEMAS DEINFORMAÇÃO
6666
66
SISTEMAS DEINFORMAÇÃO
6666
6666 66SISTEMAS DE
INFORMAÇÃO66
6666
66SISTEMAS DEINFORMAÇÃO
6666SISTEMAS DE
INFORMAÇÃO66
6666
66SISTEMAS DEINFORMAÇÃO
6666
6666SISTEMAS DE
INFORMAÇÃO66
66SISTEMAS DEINFORMAÇÃO
6666
6666SISTEMAS DE
INFORMAÇÃO6666
abstract class Aluno extends Pessoa {String nome;int RG;int numeroUSP;
Aluno(String n, int rg, int nUSP){super(n,rg);numeroUSP = nUSP;
}
void respirar(){System.out.println("Aluno respirando.");
}
final void fazerTrabalhos(){System.out.println("Trabalhando.");
}
abstract void estudar();}
Método abstratos precisam serimplementado nas sub-classesnão abstratas.
Um método não pode ser abstratoe estático ao mesmo tempo
SISTEMAS DEINFORMAÇÃO
6767
6767SISTEMAS DE
INFORMAÇÃO67
6767
67SISTEMAS DEINFORMAÇÃO
6767SISTEMAS DE
INFORMAÇÃO67
6767
67SISTEMAS DEINFORMAÇÃO
6767
6767SISTEMAS DE
INFORMAÇÃO67
67SISTEMAS DEINFORMAÇÃO
6767
67
SISTEMAS DEINFORMAÇÃO
6767
6767 67SISTEMAS DE
INFORMAÇÃO67
6767
67SISTEMAS DEINFORMAÇÃO
6767SISTEMAS DE
INFORMAÇÃO67
6767
67SISTEMAS DEINFORMAÇÃO
6767
6767SISTEMAS DE
INFORMAÇÃO67
67SISTEMAS DEINFORMAÇÃO
6767
6767SISTEMAS DE
INFORMAÇÃO6767
public class AlunoRegular extends Aluno{AlunoRegular(String nome, int RG, int NUSP){
super(nome,RG,NUSP);}
void estudarMuito(){System.out.println("Estudando muito!");
}
void estudar(){System.out.println("Aluno Regular Estudando");
}}
PRECISA implementar todosos métodos abstratos dasuper-classe
SISTEMAS DEINFORMAÇÃO
6868
6868SISTEMAS DE
INFORMAÇÃO68
6868
68SISTEMAS DEINFORMAÇÃO
6868SISTEMAS DE
INFORMAÇÃO68
6868
68SISTEMAS DEINFORMAÇÃO
6868
6868SISTEMAS DE
INFORMAÇÃO68
68SISTEMAS DEINFORMAÇÃO
6868
68
SISTEMAS DEINFORMAÇÃO
6868
6868 68SISTEMAS DE
INFORMAÇÃO68
6868
68SISTEMAS DEINFORMAÇÃO
6868SISTEMAS DE
INFORMAÇÃO68
6868
68SISTEMAS DEINFORMAÇÃO
6868
6868SISTEMAS DE
INFORMAÇÃO68
68SISTEMAS DEINFORMAÇÃO
6868
6868SISTEMAS DE
INFORMAÇÃO6868
public final class AlunoEspecial extends Aluno{AlunoEspecial(String nome, int RG, int NUSP){
super(nome,RG,NUSP);}
void respirar(){super.respirar();System.out.println("Aluno especial respirando.");
}
/* void fazerTrabalhos(){...
}*/
void estudar(){System.out.println("Aluno Especial Estudando");
}}
NAO é possível usarsuper.super.respirar(super.super não é permitido)
Este metodo não pode serimplementado aqui por serfinal na super-clase (Aluno)
PRECISA implementartodos os métodos abstratosda super-classe
SISTEMAS DEINFORMAÇÃO
6969
6969SISTEMAS DE
INFORMAÇÃO69
6969
69SISTEMAS DEINFORMAÇÃO
6969SISTEMAS DE
INFORMAÇÃO69
6969
69SISTEMAS DEINFORMAÇÃO
6969
6969SISTEMAS DE
INFORMAÇÃO69
69SISTEMAS DEINFORMAÇÃO
6969
69
SISTEMAS DEINFORMAÇÃO
6969
6969 69SISTEMAS DE
INFORMAÇÃO69
6969
69SISTEMAS DEINFORMAÇÃO
6969SISTEMAS DE
INFORMAÇÃO69
6969
69SISTEMAS DEINFORMAÇÃO
6969
6969SISTEMAS DE
INFORMAÇÃO69
69SISTEMAS DEINFORMAÇÃO
6969
6969SISTEMAS DE
INFORMAÇÃO6969
• Aluno foi escolhida como abstrata pelo fato de, neste sistema, existirem apenas alunos especiais e regulares.– Não DEVERIA ser possível criar um aluno genérico– Por isso usamos abstract
Observações
SISTEMAS DEINFORMAÇÃO
7070
7070SISTEMAS DE
INFORMAÇÃO70
7070
70SISTEMAS DEINFORMAÇÃO
7070SISTEMAS DE
INFORMAÇÃO70
7070
70SISTEMAS DEINFORMAÇÃO
7070
7070SISTEMAS DE
INFORMAÇÃO70
70SISTEMAS DEINFORMAÇÃO
7070
70
SISTEMAS DEINFORMAÇÃO
7070
7070 70SISTEMAS DE
INFORMAÇÃO70
7070
70SISTEMAS DEINFORMAÇÃO
7070SISTEMAS DE
INFORMAÇÃO70
7070
70SISTEMAS DEINFORMAÇÃO
7070
7070SISTEMAS DE
INFORMAÇÃO70
70SISTEMAS DEINFORMAÇÃO
7070
7070SISTEMAS DE
INFORMAÇÃO7070
• Classes podem implementar mais de uma interface
• Classes só podem estender uma única classe– Não existe herança múltipla em java
• Construtores não podem ser final
Finalmente
SISTEMAS DEINFORMAÇÃO
7171
7171SISTEMAS DE
INFORMAÇÃO71
7171
71SISTEMAS DEINFORMAÇÃO
7171SISTEMAS DE
INFORMAÇÃO71
7171
71SISTEMAS DEINFORMAÇÃO
7171
7171SISTEMAS DE
INFORMAÇÃO71
71SISTEMAS DEINFORMAÇÃO
7171
71
SISTEMAS DEINFORMAÇÃO
7171
7171 71SISTEMAS DE
INFORMAÇÃO71
7171
71SISTEMAS DEINFORMAÇÃO
7171SISTEMAS DE
INFORMAÇÃO71
7171
71SISTEMAS DEINFORMAÇÃO
7171
7171SISTEMAS DE
INFORMAÇÃO71
71SISTEMAS DEINFORMAÇÃO
7171
7171SISTEMAS DE
INFORMAÇÃO7171
Construtores e Herança
public class teste {}
public class teste2 extends teste {public static void main(String[] args) {
teste t = new teste2(); }}
Quando criamos um objeto de uma classe que não tem construtor, o Java usará um construtor padrão (sem parâmetros).
Esse construtor, por sua vez, chamará, automaticamente, o construtor padrão da classe-pai.
E assim por diante
SISTEMAS DEINFORMAÇÃO
7272
7272SISTEMAS DE
INFORMAÇÃO72
7272
72SISTEMAS DEINFORMAÇÃO
7272SISTEMAS DE
INFORMAÇÃO72
7272
72SISTEMAS DEINFORMAÇÃO
7272
7272SISTEMAS DE
INFORMAÇÃO72
72SISTEMAS DEINFORMAÇÃO
7272
72
SISTEMAS DEINFORMAÇÃO
7272
7272 72SISTEMAS DE
INFORMAÇÃO72
7272
72SISTEMAS DEINFORMAÇÃO
7272SISTEMAS DE
INFORMAÇÃO72
7272
72SISTEMAS DEINFORMAÇÃO
7272
7272SISTEMAS DE
INFORMAÇÃO72
72SISTEMAS DEINFORMAÇÃO
7272
7272SISTEMAS DE
INFORMAÇÃO7272
Construtores e Herança
public class teste {teste(int x){}
}
public class teste2 extends teste {public static void main(String[] args) {
teste t = new teste2(); }}
Quando criamos um construtor não padrão em uma classe, o construtor padrão deixa de existir.
E qualquer subclasse que precise dele vai gerar erro de compilação
SISTEMAS DEINFORMAÇÃO
7373
7373SISTEMAS DE
INFORMAÇÃO73
7373
73SISTEMAS DEINFORMAÇÃO
7373SISTEMAS DE
INFORMAÇÃO73
7373
73SISTEMAS DEINFORMAÇÃO
7373
7373SISTEMAS DE
INFORMAÇÃO73
73SISTEMAS DEINFORMAÇÃO
7373
73
SISTEMAS DEINFORMAÇÃO
7373
7373 73SISTEMAS DE
INFORMAÇÃO73
7373
73SISTEMAS DEINFORMAÇÃO
7373SISTEMAS DE
INFORMAÇÃO73
7373
73SISTEMAS DEINFORMAÇÃO
7373
7373SISTEMAS DE
INFORMAÇÃO73
73SISTEMAS DEINFORMAÇÃO
7373
7373SISTEMAS DE
INFORMAÇÃO7373
Construtores e Herança
public class teste {teste(int x){}
}
public class teste2 extends teste {teste2 (int a) {}
teste2 () {}
public static void main(String[] args) { teste t = new teste2(2);}
}
Infelizmente, toda subclasse que não chama nenhum construtor do pai, implicitamente chama o padrão.
Nada disso irá funcionar...
SISTEMAS DEINFORMAÇÃO
7474
7474SISTEMAS DE
INFORMAÇÃO74
7474
74SISTEMAS DEINFORMAÇÃO
7474SISTEMAS DE
INFORMAÇÃO74
7474
74SISTEMAS DEINFORMAÇÃO
7474
7474SISTEMAS DE
INFORMAÇÃO74
74SISTEMAS DEINFORMAÇÃO
7474
74
SISTEMAS DEINFORMAÇÃO
7474
7474 74SISTEMAS DE
INFORMAÇÃO74
7474
74SISTEMAS DEINFORMAÇÃO
7474SISTEMAS DE
INFORMAÇÃO74
7474
74SISTEMAS DEINFORMAÇÃO
7474
7474SISTEMAS DE
INFORMAÇÃO74
74SISTEMAS DEINFORMAÇÃO
7474
7474SISTEMAS DE
INFORMAÇÃO7474
Construtores e Herança
public class teste {teste(int x){}
}
public class teste2 extends teste {teste2 (int a) { super(a); }
teste2 () { super(0); }
public static void main(String[] args) { teste t = new teste2(2);}
}
A menos que, ou implementemos um teste() (nem que seja vazio) no pai, ou definamos o construtor do pai que deve ser chamado na classe filho
SISTEMAS DEINFORMAÇÃO
7575
7575SISTEMAS DE
INFORMAÇÃO75
7575
75SISTEMAS DEINFORMAÇÃO
7575SISTEMAS DE
INFORMAÇÃO75
7575
75SISTEMAS DEINFORMAÇÃO
7575
7575SISTEMAS DE
INFORMAÇÃO75
75SISTEMAS DEINFORMAÇÃO
7575
75
SISTEMAS DEINFORMAÇÃO
7575
7575 75SISTEMAS DE
INFORMAÇÃO75
7575
75SISTEMAS DEINFORMAÇÃO
7575SISTEMAS DE
INFORMAÇÃO75
7575
75SISTEMAS DEINFORMAÇÃO
7575
7575SISTEMAS DE
INFORMAÇÃO75
75SISTEMAS DEINFORMAÇÃO
7575
7575SISTEMAS DE
INFORMAÇÃO7575
Fátima L. S. NunesLuciano A. DigiampietriNorton T. Roman
Herança
top related