Quais são as diferenças entre substituir e sobrecarregar?

Substituir implica substituição em praticamente qualquer contexto em que eu possa pensar. Em linguagens orientadas a objetos, em particular, refere-se à substituição de uma função apresentada por um objeto pai por uma função específica filho.

A sobrecarga no contexto da linguagem de computador é um recurso que permite que várias funções com diferentes listas de parâmetros de entrada compartilhem o mesmo nome. Por exemplo, você pode ter uma função SUM () que pega uma matriz de números inteiros e retorna um número inteiro, uma função SUM () que pega uma matriz de valores de ponto flutuante e retorna um valor de ponto flutuante e uma função SUM () que usa uma matriz de sequências numéricas e retorna uma sequência numérica em que cada resultado é a soma das matrizes de entrada. O compilador de idiomas ou sistema de tempo de execução determina a versão correta da função a ser chamada com base nos argumentos fornecidos.

  • Sobrecarregar é "colocar mais coisas no mesmo cavalo".
  • Substituir é "colocar-se no mesmo cavalo" (daí, "montar".

Fora da metáfora: duas funções com o mesmo nome, usando argumentos diferentes, são uma "sobrecarga" desse nome.

Essa é a coisa que faz uma coisa inocente como

+

se comportar de maneira diferente ao adicionar números inteiros ou ao adicionar números de ponto flutuante (observe como isso é válido mesmo para C, que não suporta sobrecarga)

  1. int func (int); float func (float); bool func (pessoa);

são exemplos de sobrecargas da função "

func

"Comportando-se adequadamente para

int

,

flutuador

e

pessoa

(seja qual for

pessoa

é).

Substituição é quando uma sobrecarga está relacionada ao "

isto

”Emparelhado com um mecanismo de despacho de tempo de execução (

virtual

funções)

tão

  1. classe A {pública: vitual int func (X);}; classe B: pública A {virtual int func (X);};

é um exemplo de uma classe substituindo uma função herdada (

A :: func (X)

) com sua própria implementação (

B :: func (X)

portanto, “colocando-se no cavalo”)

Observe que, para que o despacho de tempo de execução funcione, a assinatura da função para

UMA

e

B

deve ser idêntico (mesmo tipo de retorno). Isso não é um requisito para sobrecargas simples.

Substituindo vs. Sobrecarregando em Java

Substituição e Sobrecarga são dois conceitos muito importantes em Java. Eles são confusos para programadores iniciantes em Java. Este post ilustra suas diferenças usando dois exemplos simples.

Definições

Sobrecarga

ocorre quando dois ou mais métodos em uma classe têm o mesmo nome de método, mas parâmetros diferentes.

Substituindo

significa ter dois métodos com o mesmo nome e parâmetros de método (ou seja,

assinatura de método

) Um dos métodos está na classe pai e o outro na classe filho. A substituição permite que uma classe filha forneça uma implementação específica de um método que já recebeu sua classe pai.

Substituição vs. Sobrecarga

Aqui estão alguns fatos importantes sobre Substituição e Sobrecarga:

1) O tipo de objeto real no tempo de execução, não o tipo da variável de referência, determina qual método substituído é usado em

tempo de execução

. Por outro lado, o tipo de referência determina qual método sobrecarregado será usado em

tempo de compilação

.2). O polimorfismo aplica-se à substituição, não à sobrecarga.3). Substituir é um conceito de tempo de execução, enquanto sobrecarregar é um conceito de tempo de compilação.

Um exemplo de substituição

Aqui está um exemplo de substituição. Depois de ler o código, adivinhe a saída.

  1. classe Dog {public void bark () {System.out.println ("woof"); }} A classe Hound estende Dog {public void sniff () {System.out.println ("sniff"); } public void bark () {System.out.println ("bowl"); }} public class OverridingTest {public static void main (String [] args) {Dog dog = new Hound (); latido de cachorro(); }}

Resultado:

  1. tigela

No exemplo acima, o

cão

variável é declarada como uma

Cão

. Durante o tempo de compilação, o compilador verifica se o

Cão

classe tem o

latido()

método. Contanto que o

Cão

classe tem o

latido()

método, os compiladores de código. No tempo de execução, um

Cão de caça

é criado e atribuído a

cão

. A JVM sabe que

cão

está se referindo ao objeto de

Cão de caça

, então chama o

latido()

método de

Cão de caça

. Isso é chamado de polimorfismo dinâmico.

4. Um exemplo de sobrecarga

  1. classe Dog {public void bark () {System.out.println ("woof"); } // método de sobrecarga public void bark (int num) {for (int i = 0; i

Neste exemplo de sobrecarga, os dois

latido

O método pode ser chamado usando parâmetros diferentes. O compilador sabe que são diferentes porque têm assinatura de método diferente (nome do método e lista de parâmetros do método).

Referências: 1)

Método de definição

. Este tutorial é da Oracle, explica os componentes de um método e quais deles são usados ​​pelo compilador para diferenciar métodos.

Se você está interessado em se especializar em C ou em qualquer outro idioma

Academia Oretes

em Bhubaneswar. Que fornece o melhor treinamento em programas prontos para o futuro (SAP, AI, cadeia de blocos, IOT, marketing digital), idiomas de programação e programas do YouTube (

OretesGlobal

) Basta se inscrever neste canal e aprimorar seu conhecimento.

Substituir significa que você está reprogramando uma função herdada de uma classe pai. Principalmente, isso é feito para fornecer especificidade a uma função herdada da classe pai. Como o cão herda a classe Animal. Animal tem uma função walk (). Cão herda caminhada (). É claro que os dois andam, mas o cachorro o faz de uma maneira diferente, diferente de todos os outros animais, então você programa alguma especificidade para a função walk () na classe Dog.

Sobrecarregar uma função significa que você está criando funções diferentes com parâmetros de entrada diferentes ou número de parâmetros diferente ou tipo de retorno diferente, mas com o mesmo nome. Isso é feito principalmente para facilitar o usuário, para que ele não precise se lembrar de nomes diferentes para uma função para o mesmo uso, mas para chamar de maneiras diferentes e tempos diferentes, dependendo da necessidade.

Precisamente,

Quando dois ou mais métodos têm o mesmo nome, mas um parâmetro diferente, ele está sobrecarregando e acontece no tempo de compilação. Quando dois ou mais métodos têm o mesmo nome e parâmetros, é Substituindo e acontece no tempo de execução. O desempenho é melhor em Sobrecarga em comparação com Substituição. As diferenças entre Sobrecarga e Substituição são as seguintes:

  • Sobrecarregar é adicionar ou estender ao comportamento do método, Substituir altera o comportamento existente do método
  • O polimorfismo não é aplicado à Sobrecarga, mas aplica-se à Substituição
  • Sobrecarregar é um conceito em tempo de compilação e Substituir é um conceito em tempo de execução
  • A sobrecarga pode ou não precisar de herança, mas a substituição requer herança
  • Em Sobrecarga, os métodos devem ter assinatura diferente, enquanto a Substituição deve ter a mesma assinatura
  • Métodos de sobrecarga devem ter o mesmo nome e parâmetros na mesma classe, mas em Sobrecarga devem estar em classes diferentes
  • Sobrecarregar não requer mais de uma classe, enquanto Substituir requer mais de uma classe
  • Em Sobrecarregar o método estático pode ser sobrecarregado, mas em Sobrescrever o método estático pode ser substituído
  • A sobrecarga está associada à linguagem de programação estática, a substituição está associada à linguagem de programação dinâmica
  • Os métodos de sobrecarga podem ter qualquer nível de acesso, mas os Métodos de substituição podem ter o mesmo ou amplo nível de acesso.

Procurando Curso de Treinamento Java?

Se sim, a ZenRays Technologies pode ajudá-lo. Tecnologias ZenRays Fornecendo

Treinamento Java em Bangalore

projetos ao vivo e seção prática nossos outros cursos Treinamento em Java em Bangalore, Treinamento em desenvolvimento Web em Bangalore, Treinamento em Spring em Bangalore, Treinamento em Python em Bangalore.

Se você quiser mais detalhes, visite-nos:

zenrays

Entre em contato conosco em

[email protected]

A sobrecarga permite funções com o mesmo nome e definidas na mesma referência (classe) com parâmetros e tipos de retorno variáveis ​​- ou mais geralmente, comportamento.

A substituição permite que uma criança substitua os comportamentos funcionais das funções de seus pais. O pai também pode exigir que as substituições sejam definidas com métodos abstratos. As interfaces são boas em impor substituições, pois não possuem implementação!

Espero que isto ajude!

Sobrecarga de função

significa ter mais de uma função com o mesmo tipo e nome de retorno, mas perfis de parâmetros diferentes. Por exemplo:

  1. #incluir área dupla (h duplo, w duplo) {return h * w;} área dupla (double r) {return r * r * 3.14;} int main () {double retangle_area = area (3, 4); double circle_area = area (5); std :: cout << "A área de um retângulo é" << rectangle_area << std :: endl; std :: cout << "A área de um círculo é" << circle_area << std :: endl; retornar 0;}

No exemplo acima, a área de função () está sobrecarregada. Uma das funções calcula a área de um círculo e a outra calcula a área de um retângulo. Quando a área é chamada com um parâmetro, a área de um círculo é calculada. Se for chamado com dois parâmetros, a área de um triângulo é calculada.

Sobrecarga do operador

é um conceito em C ++ em que os operadores C ++ podem ser personalizados para operandos de tipos definidos pelo usuário. Por exemplo, classe na classe string, o operador + pode ser usado para concatenar duas strings.

std :: string str = "Numérico" + "Análise;"

O valor armazenado na string str após a operação acima é "Análise Numérica"

Substituição de função

é um conceito de POO em que uma função definida é redefinida. É simplesmente acabar com suas declarações ou lógica atuais e substituí-las por novas. Por exemplo:

  1. classe Area {protected: área flutuante () {return 0; classe} Square: public area {float len; protected: float area () {return len * len; }};

Na área de classe, temos uma área de método (). Retorna zero. A classe Square herda o método area () e altera seu corpo. Simplesmente fizemos o que é chamado de substituição. Agora ele retorna a área de um quadrado. Espero que a necessidade de substituição seja clara neste exemplo.

Sobrecarga

está definindo funções com assinaturas semelhantes, mas com parâmetros diferentes.

Substituindo

é pertinente apenas para classes derivadas, onde a classe pai definiu um método e a classe derivada deseja substituir essa função.

Substituindo

1) O nome e as assinaturas dos métodos devem ser os mesmos.

2) Substituir é o conceito de polimorfismo em tempo de execução

3) Quando uma função da classe base é redefinida na classe derivada chamada Substituindo

4) Precisa de herança.

5) O método deve ter o mesmo tipo de dados.

6) O método deve ser público.

Sobrecarga

1) Ter o mesmo nome de método com diferentes assinaturas.

2) Sobrecarga é o conceito de polimorfismo em tempo de compilação

3) Duas funções com o mesmo nome e tipo de retorno, mas com tipo e / ou número de argumentos diferentes, são chamadas de Sobrecarga

4) Não precisa de herança.

5) O método pode ter diferentes tipos de dados

6) Os métodos podem ser diferentes, o acesso especifica.