[MPU, 2010 – IT Technician ပါ။] class C1 သည် အချို့သော method M1 ကိုအကောင်အထည်ဖော်ပြီး အမျိုးအစားခွဲနှစ်ခုရှိသည် ဟုယူဆပါ။: C2 e C3. ဒီအခြေအနေမှာ, C2 သို့မဟုတ် C3 အရာဝတ္ထုတစ်ခု၏အပြုအမူ…
ERRADO.
Questão que trata conceitos de orientação a objetos. Está “ERRADO”, pois o método M1 implementado na classe C1 (classe-mãe) မဟုတ် “obrigatoriamente” vai se comportar de forma idêntica em suas subclasses C2 e C3 (classes-filhas), pois essas podem implementar também o mesmo método M1, သို့သော်, com comportamento, parâmetros e tipo de retorno diferentes.
Veja que para resolver esta questão é necessário algum entendimento sobre classe, subclasse, objeto, método, သတင်းစကား, comportamento. သို့တိုင်, é uma questão que aborda especificamente os efeitos da sobrecarga e/ou sobrescrita em uma herança.
A questão não diz explicitamente se as subclasse C2 e C3 tem em si implementado também o método M1, razão pela qual, não se pode afirmar que o comportamento de um objeto de C2 ou C3 que receba uma mensagem invocando o método M1 será obrigatoriamente idêntico ao comportamento de um objeto de C1 que receba a mesma mensagem. အမှန်, PODE até ser idêntico, mas depende… não se pode afirmar!
ထိုကွောငျ့, nada impede de cogitar a possibilitade de C2 e C3 implementarem também o método M1, conforme exemplo (diagrama acima). Percebe-se que as subclasses C2 e C3 PODEM (သို့မဟုတ်မ, neste exemplo sim) implementar o mesmo método M1 da classe C1, e o mais importante, PODEM (သို့မဟုတ်မ) ter parâmetros diferentes, o que caracteriza que os objetos das subclasses também podem receber (သို့မဟုတ်မ) mensagens diferentes e comportar-se de forma diferente.
Falou em subclasses, falou em herança! As subclasses C2 e C3 herdam atributos e operações da superclasse C1 e, ထိုကွောငျ့, também compartilham o método M1 da classe C1. ထိုအခါ, ဥပမာအား, quando se chama o método M1 por meio do objeto de C2, primeiro é verificado se existe o método M1 em C2. Caso exista, então sobrecarrega e/ou sobrescreve o método M1 (existente em M1), dando uma nova ou adicional implementação/comportamento. Caso não exista o método M1 na subclasse C2, então chama o método M1 da classe-mãe C1, como ele é.
Diferença entre sobrecarregar e sobrescrever
ကောင်းသော, antes de prosseguir, precisamos definir o que é “assinatura do método”. Segundo H. M က. Deittel, “assinatura é uma combinação do nome do método e dos tipos de seus parâmetro” [Pág. 296, Java como programar, 4ª Edição].
E qual seria a diferença entre sobrecarregar e sobrescrever? Ao contrário do que dizem por aí, uma sobrecarga pode sim ocorrer em uma subclasse; não é algo apenas inerente a classe onde o método é sobrecarregado. A sobrecarga acontece quando o método tem o mesmo nome, သို့သော်, parâmetros diferentes, independente se isto ocorre na superclasse ou na subclasse. Já a sobrescrita ocorre quando a subclasse tem um método com a mesma assinatura (nome e parâmetro). Pelo menos é esse o entendimento descrito por H. M Deitel:
(1) Os métodos sobrecarregados são distinguidos por sua assinatura – uma combinação do nome do método e dos tipos de seus parâmetros [Pág. 296, Java como programar, 4ª Edição];
(2) Os métodos sobrecarregados podem ter tipos de valores devolvidos diferentes, mas devem ter listas de parâmetros diferentes. ထို့အပွငျ, os métodos sobrecarregados não precisam ter o mesmo número de parâmetros [Pág. 296, Java como programar, 4ª Edição];
(3) A subclasse pode definir um método de superclasse com a mesma assinatura; esse processo se chama sobrescrever (override) um método de superclasse [Pág. 439, Java como programar, 4ª Edição];
(4) A redefinição de um método de superclasse em uma subclasse não precisa ter a mesma assinatura que o método de superclasse. Essa definição não é uma sobrescrita de método, mas sim, simplesmente um exemplo de sobrecarga de método [Pág. 440, Java como programar, 4ª Edição].
– H ကို. M က. Deittel, : P. J. Deittel, JAVA como programar, 4ª Edição
– ကို http://pt.wikipedia.org/wiki/Orientação_a_objetos
– ကို http://en.wikipedia.org/wiki/Method_overloading
စုစုပေါင်း access: 3726