run not migrar llamar juntos funcion fcgiprocessexception fcgiconnectexception desde datos could conectar con java php

java - not - ¿Qué hacen los “implementos” en una clase?



php java fastcgi fcgiprocessexception could not run php (7)

Si una clase implementa otra clase ... ¿qué significa eso? Encontré este ejemplo de código: http://www.java2s.com/Code/Php/Class/extendsandimplement.htm

Pero desafortunadamente no tiene ninguna explicación con eso ...


Deberías mirar las interfaces de Java. Una búsqueda rápida en Google reveló esta página , que se ve bastante bien.

Me gusta pensar en una interface como una "promesa" de clases: cualquier clase que la implementa tiene cierto comportamiento que se puede esperar de ella, y por lo tanto, puede colocar una instancia de una clase implementadora en una referencia de tipo interfaz.

Un ejemplo simple es la interfaz java.lang.Comparable . Al implementar todos los métodos en esta interfaz en su propia clase, afirma que sus objetos son "comparables" entre sí y pueden ordenarse parcialmente.

La implementación de una interfaz requiere dos pasos:

  1. Declarar que la interfaz está implementada en la declaración de clase.
  2. Proporcionar definiciones para TODOS los métodos que son parte de la interfaz.

La interfaz java.lang.Comparable tiene solo un método, public int compareTo(Object other) . Entonces debes proporcionar ese método.

Aquí hay un ejemplo. Dada esta clase RationalNumber :

public class RationalNumber { public int numerator; public int denominator; public RationalNumber(int num, int den) { this.numerator = num; this.denominator = den; } }

(Nota: generalmente es una mala práctica en Java tener campos públicos, pero pretendo que sea un tipo de datos muy simple y simple, ¡así que no me importan los campos públicos!)

Si deseo poder comparar dos instancias de RationalNumber (¿para fines de clasificación, quizás?), Puedo hacerlo implementando la interfaz java.lang.Comparable . Para hacer eso, se deben hacer dos cosas: proporcionar una definición para compareTo y declarar que la interfaz está implementada.

Así es como se verá la clase de carne:

public class RationalNumber implements java.lang.Comparable { public int numerator; public int denominator; public RationalNumber(int num, int den) { this.numerator = num; this.denominator = den; } public int compareTo(Object other) { if (other == null || !(other instanceof RationalNumber)) { return -1; // Put this object before non-RationalNumber objects } RationalNumber r = (RationalNumber)other; // Do the calculations by cross-multiplying. This isn''t really important to // the answer, but the point is we''re comparing the two rational numbers. // And no, I don''t care if it''s mathematically inaccurate. int myTotal = this.numerator * other.denominator; int theirTotal = other.numerator * this.denominator; if (myTotal < theirTotal) return -1; if (myTotal > theirTotal) return 1; return 0; } }

Probablemente estés pensando, ¿cuál fue el sentido de todo esto? La respuesta es cuando observas métodos como this : algoritmos de clasificación que solo esperan "algún tipo de objeto comparable". (Tenga en cuenta el requisito de que todos los objetos deben implementar java.lang.Comparable !) Ese método puede tomar listas de CUALQUIER tipo de objetos comparables, ya sea String o Integer o RationalNumber .

NOTA: Estoy usando prácticas de Java 1.4 en esta respuesta. java.lang.Comparable ahora es una interfaz genérica, pero no tengo tiempo para explicar los genéricos.



Implementos significa que toma el comportamiento designado que especifica la interfaz. Considere la siguiente interfaz:

public interface ISpeak { public String talk(); } public class Dog implements ISpeak { public String talk() { return "bark!"; } } public class Cat implements ISpeak { public String talk() { return "meow!"; } }

Tanto la clase Cat como Dog implementan la interfaz ISpeak .

Lo bueno de las interfaces es que ahora podemos referirnos a instancias de esta clase a través de la interfaz ISpeak . Considere el siguiente ejemplo:

Dog dog = new Dog(); Cat cat = new Cat(); List<ISpeak> animalsThatTalk = new ArrayList<ISpeak>(); animalsThatTalk.add(dog); animalsThatTalk.add(cat); for (ISpeak ispeak : animalsThatTalk) { System.out.println(ispeak.talk()); }

La salida para este ciclo sería:

¡ladrar!
¡maullar!

La interfaz proporciona un medio para interactuar con las clases de una manera genérica basada en las cosas que hacen sin exponer cuáles son las clases implementadoras.

Una de las interfaces más comunes utilizadas en Java, por ejemplo, es Comparable . Si su objeto implementa esta interfaz, puede escribir una implementación que los consumidores puedan usar para ordenar sus objetos.

Por ejemplo:

public class Person implements Comparable<Person> { private String firstName; private String lastName; // Getters/Setters public int compareTo(Person p) { return this.lastName.compareTo(p.getLastName()); } }

Ahora considere este código:

// Some code in other class List<Person> people = getPeopleList(); Collections.sort(people);

Lo que hizo este código fue proporcionar un orden natural a la clase Person . Debido a que implementamos la interfaz Comparable , pudimos aprovechar el método Collections.sort() para ordenar nuestros objetos de List de Person según su orden natural, en este caso, por apellido.


Las interfaces se implementan a través de clases. Son clases puramente abstractas, por así decirlo.

En PHP, cuando una clase implementa desde una interfaz, se deben seguir estrictamente los métodos definidos en esa interfaz. Cuando una clase hereda de una clase padre, los parámetros del método pueden ser alterados. Ese no es el caso de las interfaces:

interface ImplementMeStrictly { public function foo($a, $b); } class Obedient implements ImplementMeStrictly { public function foo($a, $b, $c) { } }

causará un error, porque la interfaz no se implementó como se definió. Mientras:

class InheritMeLoosely { public function foo($a) { } } class IDoWhateverWithFoo extends InheritMeLoosely { public function foo() { } }

Esta permitido.


Se llama una interfaz. Muchos lenguajes OO tienen esta característica. Es posible que desee leer la explicación de php aquí: http://de2.php.net/interface


Una interfaz puede considerarse simplemente como una lista de definiciones de métodos (sin ningún cuerpo). Si una clase desea implementar e interactuar, está celebrando un contrato, diciendo que proporcionará una implementación para todos los métodos enumerados en la interfaz. Para obtener más información, consulte http://download.oracle.com/javase/tutorial/java/concepts/


Una interfaz define un contrato simple de métodos que todas las clases de implementación deben implementar. Cuando una clase implementa una interfaz, debe proporcionar implementaciones para todos sus métodos.

Supongo que el cartel asume un cierto nivel de conocimiento sobre el idioma.