/ / Confusão na sobrecarga de método usando classe abstrata em java - java, classe abstrata, sobrecarga de método

Confusão na sobrecarga de métodos usando classes abstratas em java - java, classe abstrata, sobrecarga de métodos

abstract class Cell<Q> {
public abstract Q getValue(); // abstract method
}
class Cell1 extends Cell<Integer> {
public Integer getValue() {// abstract method implementation
return 0;
}
}
class Cell2 extends Cell<String> {
public String getValue() {  // abstract method implementation
return "razeel";
}
}
class test
{
public static void main(String[] a)
{
Cell obj=new Cell1();
int ab=(Integer) obj.getValue();
Cell objs=new Cell2();
String str=objs.getValue().toString();
System.out.println("ab=================== "+ab);
System.out.println("String=================== "+str);
}
}
  • Podemos chamar isso de exemplo de sobrecarga de método em java. Se não, por quê?
  • É possível ter métodos com a mesma assinatura, mas diferentes tipos de retorno em java?

Respostas:

2 para resposta № 1

Claramente, isso não é sobrecarga de método. Sobrecarga significa que seu método com parâmetros diferentes retorna o tipo não tem nada a ver com sobrecarga.

public void method(int a,int b);
public void method(String s,int b);

Ou você pode dizer um número diferente de argumentos.

public void method(int a,int b,int c);
public void method(int a,int b);

o que você está fazendo é primordial.


1 para resposta № 2

O exemplo de código mostrado acima é um exemplo de métodosubstituindo. Essa é a maneira pela qual o Java implementa o polimorfismo de tempo de execução. No java, se um método substituído é chamado usando a referência de superclasse, o java determina qual versão desse método executar, dependendo do tipo de objeto a que se refere no momento da chamada, não dependendo do tipo de variável. considerar

 class Figure{

double dim1;
double dim2;

Figure(double dim1,double dim2){
this.dim1=dim1;
this.dim2=dim2;
}
double area(){
return 0;
}

}
class Rectangle extends Figure{

Rectangle(double dim1,double dim2){
super(dim1,dim2);
}
double area(){
double a;
a=dim1*dim2;
System.out.println("dimensions of rectangle are "+dim1+" "+dim2);
return a;
}

}
class Triangle extends Figure{


Triangle(double dim1,double dim2){
super(dim1,dim2);
}
double area(){
double a=(dim1*dim2)/2;
System.out.println("base & altitude of triangle are "+dim1+" "+dim2);
return a;
}

}
class test{

public static void main(String[] args){
Figure r;
Rectangle b=new Rectangle(10,10);
Triangle c=new Triangle(10,10);
r=b;
System.out.println("area of rectangle fig "+r.area());
r=c;
System.out.println("area of triangle fig "+r.area());
}

}

resultado: dimensões do retângulo são 10,0 10,0 área do retângulo fig 100.0 base e altitude do triângulo são 10,0 10,0 área do triângulo fig 50.0

para o 2º qstn: não. assinatura significa único. tipo de retorno não faz parte da assinatura


0 para resposta № 3

Podemos chamar isso de exemplo de sobrecarga de método em java.

Não.

Se não, por quê?

Sobrecarregar significa "mesmo nome, parâmetros diferentes", mas você tem subclasses implementando métodos, nada mais.

É possível ter métodos com a mesma assinatura, mas diferentes tipos de retorno em java?

Não.