¿Cómo lograr la ejecución polimorfismo en java

Kiran Biradar:

Considere el siguiente programa:

class Bike{
   void run(){System.out.println("running");}
 }

class Splender extends Bike{

   void run(){
          System.out.println("running safely with 60km");
   }

   void run2(){
        System.out.println("running2 safely with 60km");
   }

   public static void main(String args[]){
     Bike b = new Splender();//upcasting
     b.run2();
   }
 }

Mi pregunta:

b.run2();

Cómo acceder al run2método de la clase derivada de acuerdo al objeto de la clase base? A partir de ahora se está lanzando error de compilación:

242/Splender.java:12: error: cannot find symbol
     b.run2();
      ^
  symbol:   method run2()
  location: variable b of type Bike
1 error
ItFreak:

Cuando assigining Bike b = new Splender();, se asigna la variable de bun tipo de Bike. Para los métodos de acceso de Splender, es necesario reparto:((Splender) b).run2();

Como vi tu comentario: implementar una interfaz resultados de la misma compilación "problema" que el compilador no sabe acerca de los métodos 'especializados', que sólo conocerá los methdods interfaces. Pero la fundición trabajará allí también.
La única manera de evitar esto sería mover run2()a la interfaz de lo que sería una contradicción a su caso de pregunta / uso

Supongo que te gusta

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