Notas de estudio: polimorfismo y clases internas en java

Polimorfismo

l El polimorfismo es el concepto más importante en la orientación a objetos. Hay dos manifestaciones en Java:

1. Método de sobrecarga (sobrecarga) y reescritura (sobrescritura).

2. Polimorfismo de objeto: se puede aplicar directamente a clases e interfaces abstractas.

Variables de referencia de Java tienen dos tipos: de tipo en tiempo de compilación y de tipo en tiempo de ejecución . El tipo de tiempo de compilación está determinado por el tipo utilizado cuando se declara la variable, y el tipo de tiempo de ejecución está determinado por el objeto realmente asignado a la variable.

Si el tiempo de ejecución y el tipo de tiempo de compilación son inconsistentes, hay polimorfismo ( polimorfismo ) L
objeto polimórfico: en Java, una subclase de objeto puede reemplazar el objeto utilizando la clase principal

Una variable solo puede tener un cierto tipo de datos

Una variable de tipo de referencia puede apuntar (hacer referencia) a muchos tipos diferentes de objetos

Persona p = nueva Persona ();

Person e = new Student (); // La variable e de tipo Person apunta a un objeto de tipo Student

Puede verse como una subclase especial de la clase principal, por lo que la referencia al tipo de clase principal de la subclase de objeto puede apuntar: transición ascendente ( upcasting ).
Si una variable de tipo de referencia se declara como el tipo de la clase principal, pero en realidad se refiere al objeto de la subclase, entonces la variable ya no puede acceder a las propiedades y métodos agregados en la subclase.

Estudiante m = nuevo Estudiante ();

m.school = " pku "; // Legal , la clase Student tiene variables miembro de la escuela

Persona e = nuevo Estudiante ();

e.school = " pku "; // Ilegal , la clase Person no tiene una variable miembro de la escuela

Los atributos se determinan en el momento de la compilación. En el momento de la compilación, e es de tipo Person , y no hay una variable miembro de la escuela , por lo que se produce el error de compilación.

Clase interior

En Java, la definición de una clase puede ubicarse dentro de otra clase, la primera se denomina clase interna y la segunda, clase externa.

La clase interna se usa generalmente en la clase o bloque de instrucción en la que está definida, y se debe dar el nombre completo cuando se hace referencia a ella externamente.

El nombre de la clase Inner no puede ser el mismo que el de la clase que la contiene;

La clase interna puede usar los datos privados de la clase externa, porque es un miembro de la clase externa y los miembros de la misma clase pueden acceder entre sí. La clase externa necesita acceder a los miembros de la clase interna, clase interna. Miembro u objeto de clase interna. Miembro.

Clasificación: clase interna de miembro ( clase interna de miembro estático y clase interna de miembro no estático)

Clase interna parcial (modificador de lado), clases internas anónimas

 class A {
    
    

 private int s;

 public class B{
    
    public void mb() {
    
    

 s = 100;  

 System.out.println("在内部类B中s=" + s);} }

 public void ma() {
    
    

 B i = new B();

 i.mb();

 } }public class Test {
    
     

 public static void main(String args[]){
    
    

​     A o = new A();

​     o.ma();

 }  } 

Clase interna **** como miembro de la clase:

Puede declararse como definitivo el

A diferencia de las clases externas, la clase interna puede declararse como privada o protegida ;

La clase interna se puede declarar como estática , pero las variables miembro no estáticas de la clase externa ya no se pueden usar en este momento;

Clase interna como clase:

Puede declararse como una clase abstracta , por lo que puede ser heredada por otras clases internas

[Nota] Los miembros de clases internas no estáticas no se pueden declarar como estáticos, y los miembros estáticos solo se pueden declarar en clases externas o clases internas estáticas.
Una clase interna anónima no puede definir miembros, métodos y clases estáticos, solo se puede crear una instancia de la clase interna anónima. Una clase interna anónima debe estar detrás de new y usarla para implementar implícitamente una interfaz o implementar una clase.

nuevo constructor de clase padre (lista de argumentos) | interfaz de implementación () {

// La parte del cuerpo de la clase de la clase interna anónima

}

interface A{
    
    

 public abstract void fun1();

}

public class Outer{
    
    

 public static void main(String[] args) {
    
    

 new Outer().callInner(new A(){
    
    //接口是不能new但此处比较特殊是子类对象实现接口,只不过没有为对象取名

 public void fun1() {
    
    

 System.out.println(“implement for fun1");

 }

 });// 两步写成一步了

 }

 public void callInner(A a) {
    
    

 a.fun1();

 }

} 

Supongo que te gusta

Origin blog.csdn.net/qq_44909275/article/details/105414167
Recomendado
Clasificación