1. El estático El modificador se usa para crear variables y métodos que existirán independientemente de las instancias creadas para la clase. Todos los miembros estáticos existen antes de que usted cree una nueva instancia de una clase, y solo habrá una copia de un miembro estático independientemente del número de instancias de esa clase. En otras palabras, todas las instancias de una clase dada comparten el mismo valor para cualquier variable estática dada.
2. Las invocaciones de métodos polimórficos se aplican solo a métodos de instancia. Siempre puede hacer referencia a un objeto con un mas general tipo de variable de referencia (una superclase o interfaz), pero en tiempo de ejecución, lo ÚNICO que se selecciona dinámicamente en función de la objeto real(en lugar del tipo de referencia) son métodos de instancia. No métodos estáticos. No variables. Solo los métodos de instancia anulados se invocan dinámicamente según el tipo del objeto real.
Ejemplo:
class Mammal{ String name = "furry "; String makeNoise(){ return "generic noise"; } } class Zebra extends Mammal{ String name = "stripes "; String makeNoise(){ return "bray"; } } public class ZooKeeper { public static void main(String[] args){ new ZooKeeper().go(); } void go(){ Mammal m = new Zebra(); System.out.println(m.name + m.makeNoise()); } } Result: furry bray |
3. El tipo de una variable de referencia determina los métodos que se pueden invocar en el objeto al que hace referencia la variable.
4. Una variable de referencia puede declararse como un tipo de clase o un tipo de interfaz. Si la variable se declara como un tipo de interfaz, puede hacer referencia a cualquier objeto de cualquier clase que implemente la interfaz.
5. Para resumir, qué versión anulada del método a llamar se decide en tiempo de ejecución según el tipo de objeto, pero qué versión sobrecargada del método a llamar se basa en el tipo de referencia del argumento pasado en compilar hora.
6. La cohesión es el principio OO más estrechamente asociado con asegurarse de que una clase esté diseñada con un propósito único y bien enfocado.
La encapsulación es el principio OO más estrechamente asociado con la ocultación de detalles de implementación.
El acoplamiento es el principio OO más estrechamente asociado con asegurarse de que las clases conozcan otras clases solo a través de sus API.
Polimorfismo: el principio OO más estrechamente asociado con permitir que un solo objeto se considere que tiene muchos tipos.