¿Esto se considera polimorfismo?

Estoy confundido con el polimorfismo y me pregunto si esto se considera polimorfismo.

Siento que se ve un poco raro, pero aún se compila correctamente.

public class Family {
    void FamilyInfo() {
        System.out.println("This is a family super class");
    }
}

public class Grandparents extends Family {
    void FamilyInfo() {
        System.out.println("Graparents are the elders in the family and they are the sub class of family");
    }
}

public class Parents extends Grandparents {
    void FamilyInfo() {
        System.out.println("The parents are the children of the grandparents and they are the sub sub class for family");
    }
}

public class FamilyDemo {
    public static void main(String ary[]) {
        Grandparents Gp = new Grandparents();
        Parents P1 = new Parents();


        Gp.FamilyInfo();
        P1.FamilyInfo();

    }
}
Respuesta 1

Su método FamilyInfose anula en las tres clases de la jerarquía. Este es un ejemplo de polymorphism.

Cuando llame Gp.FamilyInfo();: llamará al método implementado en Grandparentsclase e imprimirá, Graparents are the elders in the family and they are the sub class of familymientras P1.FamilyInfo();que llamará al método en Parentsclase e imprimirá The parents are the children of the grandparents and they are the sub sub class for family.

Por lo tanto, puede ver que el mismo método FamilyInfo()tiene dos comportamientos diferentes, que es el comportamiento polimórfico.

Su ejemplo es muy similar al mencionado en el tutorial aquí: Tutorial de Java: Polimorfismo . Así que no te confundas.

Respuesta: 2

El ejemplo no demuestra polimorfismo, sino que puedo ver una herencia simple orientada a objetos. Para que se use el concepto de polimorfismo, el código debe ser el siguiente.

public class FamilyDemo 
{
    public static void main(String ary[]) 
    {
        Family Gp = new Grandparents();
        Family P1 = new Parents();

        Gp.FamilyInfo();
        P1.FamilyInfo();
    }
}

Aunque Gpes de tipo Family, se comporta como tipo Grandparentsporque se inicializa con un objeto de ese tipo.

Entonces, se puede esperar lo siguiente: los abuelos son los ancianos de la familia y son la subclase de la familia. Los padres son los hijos de los abuelos y son la subclase de la familia.

Respuesta: 3

Nuestro entrenador dijo que el uso de extensiones es más un ejemplo de herencia. Pero si usamos implementos (interfaz), podemos decir que es polimórfico porque podemos implementar muchas interfaces.

p.ej

interface Horse {
    void run();
}

interface Eagle {
    void fly();
}

public class Pegasus implements Horse, Eagle {
    // Implement methods
     public void run() {
         // do run
     }
     public void fly() {
         // do fly
     }
 }
Respuesta: 4

La definición del diccionario de polimorfismo se refiere a un principio en biología en el que un organismo o especie puede tener muchas formas o etapas diferentes

El concepto básico es que un objeto dado actúe como otro. Esto se logra mediante el uso de interfaces y herencia en Java.

Un mejor ejemplo de esto sería (con su código como base)

public class FamilyDemo {
    public static void main(String ary[]) {
        Family gp = new Grandparents();
        Family p1 = new Parents();

        dump(gp);
        dump(p1);
    }

    public static void dump(Family family) {
        family.FamilyInfo();
    }
}

Esto básicamente permite Gradparentsy Parents"actuar" como sonFamily

Respuesta: 5

1. ¿Qué es el polimorfismo?

En la programación orientada a objetos, el polimorfismo (del griego que significa "tener múltiples formas") es la característica de poder asignar un significado o uso diferente a algo en diferentes contextos, específicamente, para permitir que una entidad como una variable, una función , o un objeto para tener más de una forma.

2. Dos tipos de polimorfismo

a) Polimorfismo estático o en tiempo de compilación

El método a llamar se decide solo en tiempo de compilación. La sobrecarga de métodos es un ejemplo de esto. Por ejemplo

public class calculation
{
    public int add(int x, int y)
    {
        return x + y;
    }
    public int add(int x, int y, int z)
    {
        return x + y + z;
    }
}

aquí puedes ver que hay dos funciones con el mismo nombre pero con firmas diferentes

b) Polimorfismo dinámico o de tiempo de ejecución.

El polimorfismo en tiempo de ejecución también se conoce como anulación de método. En este mecanismo por el cual una llamada a una función anulada se resuelve en tiempo de ejecución (no en tiempo de compilación) si una clase base contiene un método que se anula.

Class BaseClass
{
Public void show ()
{ 
Console.WriteLine("From base class show method");
}
}
Public Class DynamicDemo : BaseClass
{
Public void show()
{
Console.WriteLine("From Derived Class show method");
}
Public static void main(String args[])
{
DynamicDemo dpd=new DynamicDemo ();
Dpd.show();

}
}
Respuesta: 6

Técnicamente hablando, esto es polimorfismo. Sin embargo, ha elegido un mal ejemplo y parece que no está entendiendo la idea detrás del polimorfismo. Un mejor ejemplo sería algo como esto.

public abstract class Shape {
  public abstract void drawShape();
}

public class Rectangle extends Shape {
  public void drawShape() {
    // code for drawing rectangle
  }
}

public class Circle extends Shape {
  public void drawShape() {
    // code for drawing circle
  }
}

public class FilledRectangle extends Rectangle {
  public void drawShape() {
    super.drawShape();
    // code for filling rectangle
  }
}

Entonces, una clase responsable del dibujo no necesita saber cómo dibujar cada forma individual. En cambio, puede hacer esto

public void drawAllShapes(Shape[] myShapes) {
  for (int i = 0; i < myShapes.length; ++i) {
    myShapes[i].drawShape();
  }
}

El objetivo es abstraer la implementación concreta y todos los detalles que acompañan y, en su lugar, solo presentar una interfaz común. Esto hace que sea mucho más fácil trabajar con diferentes clases, como puede ver en el último método anterior.

Respuesta: 7

Un buen ejemplo para el polimorfismo sería:

public static void print(Family[] family){
    for(int i=0; i< family.length; i++){
        family[i].FamilyInfo();
    }
}

public static void main(String args[])
{
    Family[] family = new Family[2];
    Grandparents Gp = new Grandparents();
    Parents P1 = new Parents();
    family[0] = Gp;
    family[1] = P1;

    //and then send the array to another method which 
    //doesn't "know" which entry in the array is a parent and which is grandparent
    //and there you can loop the array calling family[i].FamilyInfo();
    //THIS is the whole idea of polymorphism in a nutshell
    print(family);

}
Respuesta: 8

Estoy tratando de poner bootstrap.properties desde fuera de mi jar, para que otros desarrolladores no lo anulen por error. ¿Podría por favor aconsejar aquí? Este es su contenido: dirigir a la primavera ...

Tengo una ArrayList (String) que contiene una lista de fechas formateadas como esta: elemento 1: "2012-5-1" elemento 2: "2012-8-10" elemento 3: "2012-12-5" elemento 4: "2013-12-21" elemento 5: "2013-12-13" ...

Estoy tratando de sincronizar mis métodos de clase Person para que mi variable de contador estático se reduzca en un hilo a la vez. Persona de clase pública extiende Thread {private static int count = ...

Actualmente estoy probando una interfaz para Java que permite usar llamadas R con Java. Por lo tanto, necesito una conexión que también encapsule un proceso. Ahora necesito saber cómo JUnit procesa esa Unidad ...