A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.

Apresentações semelhantes


Apresentação em tema: "Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada."— Transcrição da apresentação:

1 Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada por outras classes. Seu objetivo é ser herdada por outras classes. Podem possuir métodos abstratos Podem possuir métodos abstratos Métodos abstratos não possuem corpo na classe em que são definidos como abstract, seu objetivo é obrigar as classes que herdam de sua classe a lhe definirem.Métodos abstratos não possuem corpo na classe em que são definidos como abstract, seu objetivo é obrigar as classes que herdam de sua classe a lhe definirem.

2 Palavra reservada this Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando aquela variável cuja declaração estiver mais próxima, no caso o parâmetro. Caso desejemos referenciar o atributo da classe e não o parâmetro devemos usar a palavra reservada this antes do nome da variável.. Em Java podemos ter um parâmetro de um método e um atributo de uma classe com o mesmo nome. Caso façamos uma referência a esta variável, pelo princípio da localidade estaremos referenciando aquela variável cuja declaração estiver mais próxima, no caso o parâmetro. Caso desejemos referenciar o atributo da classe e não o parâmetro devemos usar a palavra reservada this antes do nome da variável..

3 Vejamos o seguinte exemplo Vejamos o seguinte exemplo public class Exemplo { private int testada = 20; private int testada = 20; public void testaPalavra(int testada) public void testaPalavra(int testada) { JOptionPane.showMessageDialog(null,"Parametro = "+testada+" Atributo = "+this.testada); JOptionPane.showMessageDialog(null,"Parametro = "+testada+" Atributo = "+this.testada); } public static void main(String args[]) public static void main(String args[]) { Exemplo algum = new Exemplo(); Exemplo algum = new Exemplo(); algum.testaPalavra(8); algum.testaPalavra(8); }}

4 Herança - continuação Vimos anteriormente que o nivel de protecao de atributos e metodos pode ser public, protectec e private e que componentes declarados como private nao podem ser acessados por suas subclasses. Uma forma de contornar isto e criar metodos set e get publicos de forma que a subclasse possa acessar estes atributos atraves dos metodos. Vimos anteriormente que o nivel de protecao de atributos e metodos pode ser public, protectec e private e que componentes declarados como private nao podem ser acessados por suas subclasses. Uma forma de contornar isto e criar metodos set e get publicos de forma que a subclasse possa acessar estes atributos atraves dos metodos. Classes abstratas, como visto anteriormente sao classes que nao podem ser instanciadas, cuja finalidade e agrupar caracteristicas que devem ser herdadas por outras classes. Classes abstratas, como visto anteriormente sao classes que nao podem ser instanciadas, cuja finalidade e agrupar caracteristicas que devem ser herdadas por outras classes. Metodos declarados como abstratos por sua vez nao fornecem implementacoes, estes metodos deverao obrigatoriamente ser implementados nas subclasses. Metodos declarados como abstratos por sua vez nao fornecem implementacoes, estes metodos deverao obrigatoriamente ser implementados nas subclasses.

5 Herança - continuação O Java ao contrário de C++ não suporta herança múltipla; O Java ao contrário de C++ não suporta herança múltipla; Toda classe herda da classe object. Toda classe herda da classe object. Uma classe pode herdar de qualquer classe desde que ela não tenha o modificador final. Uma classe pode herdar de qualquer classe desde que ela não tenha o modificador final. Polimorfismo permite programar no geral em vez de programar no especifico. Polimorfismo permite programar no geral em vez de programar no especifico. Polimorfismo permite escrever programas que processem objetos que compartilham a mesma superclasse em uma hierarquia de classes como se todas fossem objetos da superclasse. Polimorfismo permite escrever programas que processem objetos que compartilham a mesma superclasse em uma hierarquia de classes como se todas fossem objetos da superclasse. Já vimos como implementar polimorfismo por overloading (sobrecarga). Já vimos como implementar polimorfismo por overloading (sobrecarga). Vejamos agora como implementar polimorfismo por override. Vejamos agora como implementar polimorfismo por override.

6 Polimorfismo por override Um método de uma subclasse pode reescrever um método da superclasse de forma que ele atenda melhor suas necessidades. Para isto o método da subclasse deve ter a mesma assinatura do método da superclasse. Um método de uma subclasse pode reescrever um método da superclasse de forma que ele atenda melhor suas necessidades. Para isto o método da subclasse deve ter a mesma assinatura do método da superclasse. Os modificadores de acesso não precisam ser os mesmos entretanto o método da subclasse deve ter o modificador de acesso igual ou menos restritivo que o modificador de acesso do método original. Os modificadores de acesso não precisam ser os mesmos entretanto o método da subclasse deve ter o modificador de acesso igual ou menos restritivo que o modificador de acesso do método original. Vejamos o seguinte exemplo: Vejamos o seguinte exemplo:

7 public class SuperClasse { void mostra(int y) void mostra(int y) { System.out.println("da superclasse: "+y); System.out.println("da superclasse: "+y); }} public class SubClasse extends SuperClasse { public void mostra(int y) public void mostra(int y) { System.out.println("da subclasse: "+y); System.out.println("da subclasse: "+y); } public static void main(String args[]) { SuperClasse objSuper = new SuperClasse(); SuperClasse objSuper = new SuperClasse(); SubClasse objSub = new SubClasse(); SubClasse objSub = new SubClasse(); objSuper.mostra(10); objSuper.mostra(10); objSub.mostra(10); objSub.mostra(10); }}

8 Polimorfismo por override Na tabela acima podemos ver resumidamente os modificadores de acesso e os direitos que cada um deles dão. Na tabela acima podemos ver resumidamente os modificadores de acesso e os direitos que cada um deles dão.

9 Exercicio As classes a seguir tem o objetivo de “representar” circulos e quadrados na tela.

10 Exercício (cont) 1) Crie uma classe generalizadora chamada Figura que deve conter tudo que for comum às duas classes anteriormente vistas. 1) Crie uma classe generalizadora chamada Figura que deve conter tudo que for comum às duas classes anteriormente vistas. 2) Modifique Círculo e Quadrado de forma que eles herdem de Figura. 2) Modifique Círculo e Quadrado de forma que eles herdem de Figura. 3) Implemente polimorfismo por override ao reescrever o método desenha nas subclasses que herdam de Figura. 3) Implemente polimorfismo por override ao reescrever o método desenha nas subclasses que herdam de Figura. 4) Crie um método main que instancie um objeto de cada uma das classes criadas e chame o desenha de cada um deles. 4) Crie um método main que instancie um objeto de cada uma das classes criadas e chame o desenha de cada um deles.


Carregar ppt "Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada."

Apresentações semelhantes


Anúncios Google