¿Cómo puedo extender función sólo que en lugar de toda la clase en Java?

¿Cómo puedo extender solo funciona en Java? (no de la clase se extiende a)

/*Example: 
 * year 1990 Alex Kumar 
 * year 1990 Jhon Ya'ay 
 * made this: do not touch modify here */
public static void OldMade()
{
    Connect("+1800PIZZA");        
    Say("MYID:69"); 
    Request("PIZZACITROEN_BLACK");
}

/*Example: 
 * year 2011 Sunil Williams
 * applied which extends 1990 */
public static void MadeInIndia extends this.OldMade
{
    //hidden include Connect("+1800PIZZA");        
    //hidden include Say("MYID:69"); 
    //hidden include Request("PIZZACITROEN_BLACK");
    Send("CorrectionPandit"); 
}

private static void main(Strig args[])
{
    //Try 1 call and get old + new
    MadeInIndia();        

    //execute  Connect("+1800PIZZA");        
    //execute  Say("MYID:69"); 
    //execute  Request("PIZZACITROEN_BLACK"); 
    //execute  Send("CorrectionPandit");
}
  • No. Usted puede extender la clase y reemplazar solo el método que se quiere «extender».
  • ¿Qué significa sólo para reemplazar sólo el método, que no se extiende de la clase ?
InformationsquelleAutor | 2011-09-14

6 Kommentare

  1. 6

    No se puede hacer. Java es orientado a objetos; sólo se heredan y se extienden desde las clases e interfaces.

    No «extender» métodos estáticos. En el siguiente arreglo, clase B de la versión estática de foo opacará a que a partir de A. Si B debe llamar a Un método estático, se puede hacer de forma tan explícita:

    public class A {
    
        public static void foo() { System.out("foo for A classes"); }
    }
    
    public class B extends A {
    
        public static void foo() { System.out("foo for B classes"); }
    }
    • Usted dijo que usted puede extender el funciones en otros lenguajes.
    • Estoy hablando sólo de Java. No deducir cosas acerca de otros idiomas. Pensé que no hay tal cosa.
    • Para aclarar «eclipsar»: no Hay ningún método de envío basado en tiempo de ejecución tipos de métodos estáticos: A b = new B(); b.foo() probablemente no hacer lo que piensa (y el compilador avisa).
  2. 1

    A extender métodos estáticos (como el de tu ejemplo) usted acaba de llamar el método original:

     public static void MadeInIndia {
       OldMade();
       Send("CorrectionPandit"); 
     }
  3. 0

    Sólo porque la Herencia definido de esta manera, Así que usted no puede reemplazar el método.
    Concepto de clase super es poner el comportamiento general en el nivel de super tipo.
    Y su sub clase es del mismo tipo que la clase super.
    Y si necesita algún comportamiento específico en sub clase, a continuación, reemplace super clase de método y cambiarlo según sub requisito de clase.

  4. 0

    Si usted considera inheritance – su propósito principal es permitir child clases para agregar a la parent clase de atributos y comportamiento. Además de la adición, o la ampliación, la child clase también podría optar por reemplazar. Desde primordial no tiene mucho sentido para los atributos, es ampliamente utilizado para los métodos. También tenga en cuenta, cuando se reemplaza métodos, bastante volver a escribir toda la lógica, o, invocar super.method() y, a continuación, hacer algo después.

    Ahora, si usted fuera a intentar y aplicar el mismo concepto a los métodos – verás que realmente no tiene mucho sentido en el caso de un lenguaje orientado a objetos. Los métodos de siempre encapsular comportamiento sólo. Los atributos no están asociados con los métodos. Así, por el que se extiende, que solo los extremos hasta volver a escribir toda la lógica, o, hacer algo a lo largo de las líneas de super.method().

    Sin embargo, todo esto tiene sentido en el caso de un lenguaje de programación funcional como Haskell, Scala o Javascript. Esto es debido a que estos idiomas considerar functions son los primeros miembros de la clase – lo que significa que usted puede escribir su programa utilizando sólo las funciones, sin que ninguna de las clases. En estos idiomas, usted encontrará que la función de la herencia está disponible en algunos o la otra forma.

  5. 0

    No hay manera que usted puede extender un método; es en contra de la programación orientada a objetos conceptos.

    Puede implementar la funcionalidad en las siguientes dos maneras –

    public static void OldMade()
    {
        Connect("+1800PIZZA");        
        Say("MYID:69"); 
        Request("PIZZACITROEN_BLACK");
    }
    
    public static void MadeInIndia extends this.OldMade
    {
        OldMade();
        Send("CorrectionPandit"); 
    }
    
    private static void main(Strig args[])
    {
        MadeInIndia();
    }

    O

    public static void OldMade()
    {
        Connect("+1800PIZZA");        
        Say("MYID:69"); 
        Request("PIZZACITROEN_BLACK");
    }
    
    /*public static void MadeInIndia extends this.OldMade
    {
        OldMade();
        Send("CorrectionPandit"); 
    }*/
    
    private static void main(Strig args[])
    {
        //MadeInIndia();
        OldMade();
        Send("CorrectionPandit"); 
    }

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Recent Articles

Python «set» con duplicados/elementos repetidos

Hay una forma estándar de representar un "conjunto" que puede contener elementos duplicados. Como yo lo entiendo, un conjunto tiene exactamente un cero o...

Python: generador de expresión vs rendimiento

En Python, ¿hay alguna diferencia entre la creación de un generador de objetos a través de un generador de expresión versus el uso de...

Cómo exportar/importar la Masilla lista de sesiones?

Hay una manera de hacer esto? O tengo que tomar manualmente cada archivo de Registro? InformationsquelleAutor s.webbandit | 2012-10-23

no distingue mayúsculas de minúsculas coincidentes en xpath?

Por ejemplo, para el xml a continuación <CATALOG> <CD title="Empire Burlesque"/> <CD title="empire burlesque"/> <CD...