Clase que se extiende desde un método toString clase abstracta no funciona: /

joshua.vw:

Esta es la clase principal de demostración

public class Ongoing{

  public static void main(String[] args){

    ExtendsAbstract josh = new ExtendsAbstract(5, "donkey");

    System.out.println(josh.toString());



  }

}

esta es la clase extendida de la clase abstracta, el que está ToString método no funcionará.

public class ExtendsAbstract extends Abstract{

  private String t;

  public ExtendsAbstract(int y, String t){
    super(y);
    this.t = t;
  }

  public String getString(){
    return this.t;  
  }

  public int getInt(){
    return super.getInt();
  }

  public String toString(int y){

    return(/*super.toString(y)+*/"The integer is "+ y) ;

  }

}

Esta es la clase abstracta

public abstract class Abstract{

  private int y;


  public Abstract(int y){
    this.y = y;
  }

  public int getInt(){
    return y;
  }

  public String toString(int y){
    return("The integer is :"+y);
  }


}

Cada vez que intento y el acceso al método toString de la clase extendida se limita a imprimir lo que creo que es una dirección de memoria. Yo no lo hice, incluso meterse con la clase abstracta y todavía lo hice, ¿alguien sabe por qué? También otra pregunta sobre las clases abstractas, ¿Qué ventajas que aportan, se trata sólo de la memoria? Porque no se puede tener acceso a los miembros privados de ella por lo que no es lo mismo que una clase normal, sólo más restricciones?

Arun Sudhakaran:

Decir que usted tiene clases Dady Sonque se definen como esto

public class OverLoadedToString {

    public static void main(String[] args) {
        Son son = new Son();
        son.test();
        son.test(90);
    }
}

class Dad {

    void test() {
        System.out.println("Dad - test");
    } 
}

class Son extends Dad {

    void test(int testTime) {
        System.out.println("Son - test1" + testTime);
    }
}

La Sonclase está extendiendo Dadpor lo que el test()sin argumentos es heredera de Son, al igual que su ExtendsAbstractclase está teniendo toString()sin argumentos que heredan de Objectla clase (cada clase de la clase de objetos de Java hereda).

A continuación, en la clase Hijo añadí nuevo método test(int testTime), que tiene un argumento, que las marcas test()y test(int testTime)diferente que se llama método overloading. En que ExtendsAbstractclase hay dos toStringmétodos uno es el no-arg heredada y el otro ha definido.

Ahora voy a mostrar el flujo de herencia

Objeto ---> Extracto ---> ExtendsAbstract

Clase de objeto toString()métodos imprime la dirección de memoria, podemos anularlo en nuestras clases para cambiar su definición, puede devolver cualquier cadena que desea. Sin embargo, no se ha anulado en cualquier lugar, ya sea en Abstractclase o ExtendsAbstractclase, por lo que en ambas clases se imprimirá la dirección de memoria.

En su Ongoingclase a la que llama esa clase de objeto toString()método que siempre imprime dirección de memoria. Su confusión es que usted cree que ha anulado el toString()método, pero en realidad le acaban de sobrecargado y que está llamando al método inadecuado para su salida esperada.

Referencia: Java sobrecarga y anulando

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=220910&siteId=1
Recomendado
Clasificación