Aburrido JavaEE desde la entrada hasta el abandono (9) Encapsulación detallada y polimorfismo detallado

Tabla de contenido

1. Encapsulación

1. El papel y el significado de la encapsulación

2. Ventajas específicas de la encapsulación en programación:

3. La realización de la encapsulación: el uso de símbolos de control de acceso.

4. Dos detalles sobre protegido:

5. Reglas simples para la encapsulación en desarrollo

6.javaBean

2. Polimorfismo

1. Concepto e implementación del polimorfismo

2. Los principales puntos del polimorfismo

3. Código de muestra


1. Encapsulación

1. El papel y el significado de la encapsulación

Quiero ver la televisión, solo presione el interruptor y cambie el canal. ¿Es necesario entender la estructura interna del televisor? ¿Es necesario tocar el tubo de imagen? Para facilitar nuestro uso del televisor, el fabricante encapsula todos los detalles internos complicados y solo expone interfaces simples, como el interruptor de encendido. . No necesitamos preocuparnos por cómo se logra la implementación interna específica. Lo que necesita ser conocido por el usuario está expuesto, y todo lo que no necesita ser conocido por el usuario está oculto, esto es la encapsulación. Para ser más profesional, la encapsulación consiste en combinar las propiedades y operaciones del objeto en un todo independiente y ocultar los detalles de implementación interna del objeto tanto como sea posible. El diseño de nuestro programa debe perseguir "alta cohesión, bajo acoplamiento". Alta cohesión significa que los detalles de la operación de datos internos de la clase se completan por sí mismos y no se permiten interferencias externas; bajo acoplamiento significa que solo una pequeña cantidad de métodos están expuestos para uso externo, y es conveniente para llamadas externas como tanto como sea posible.

2. Ventajas específicas de la encapsulación en programación:

Mejora la seguridad del código.
Mejore la reutilización del código.
"Alta cohesión": Encapsule los detalles para facilitar la modificación del código interno y mejorar la capacidad de mantenimiento.
"Acoplamiento bajo": simplifique las llamadas externas, facilite el uso de personas que llaman y facilite la expansión y la colaboración.

3. La realización de la encapsulación: el uso de símbolos de control de acceso.

Java utiliza "símbolos de control de acceso" para controlar qué detalles deben encapsularse y qué detalles deben exponerse. Los cuatro tipos de "símbolos de control de acceso" en Java son privados, predeterminados, protegidos y públicos e ilustran la encapsulación orientada a objetos, por lo que debemos usarlos para minimizar los derechos de acceso tanto como sea posible para mejorar la seguridad. A continuación se describen sus derechos de acceso en detalle. El alcance de su autoridad de acceso se muestra en la siguiente figura.

(1) privado expreso privado, solo su propia clase puede acceder
(2) el valor predeterminado indica que no hay modificación del modificador, solo la clase en el mismo paquete puede acceder
(3) la representación protegida puede ser una subclase de clase con un paquete y otros paquetes visitan

Nota: La diferencia entre estática pública y estática:

De hecho, es la diferencia de permisos de acceso, uno es público y el otro es predeterminado.

4. Dos detalles sobre protegido:

1. Si la clase principal y la clase secundaria están en el mismo paquete, la clase secundaria puede acceder a los miembros protegidos de la clase principal ya los miembros protegidos del objeto de clase principal.
2. Si la subclase y la clase padre no están en el mismo paquete , la subclase puede acceder a los miembros protegidos de la clase padre pero no a los miembros protegidos del objeto de clase padre .

p.ej:

Primero, las dos clases están en paquetes diferentes.

Código:

Test1.java

public class Test1 {
    private int testPrivate=100;
    int testDefault=200;
    protected int testProtected=300;

    public void test(){
        System.out.println(this.testPrivate);//只有本类可以用私有成员
        System.out.println(this.testDefault);//同一个包的类就能用默认成员
    }
}

Test2.java

import com.company.Test.a.Test1;

public class Test2 extends Test1{
    public void fun(){
        System.out.println(super.testProtected);//子类可访问父类的protected成员
    }

    public static void main(String[] args) {
        Test1 test1=new Test1();
        test1.test();
        Test2 test2=new Test2();
        test2.fun();
        //System.out.println(test.testProtected); 报错,即不能访问父类对象的protected成员

    }

}

Producción:

100
200
300

5. Reglas simples para la encapsulación en desarrollo

Generalmente se utilizan permisos de acceso privado.
Proporcione los métodos get / set correspondientes para acceder a los atributos relacionados.Estos métodos generalmente se modifican públicamente para proporcionar asignación de atributos y operaciones de lectura (nota: ¡el método get de las variables booleanas comienza con is!).
Algunos métodos auxiliares que solo se utilizan en esta clase pueden decorarse con privado, y se espera que los métodos llamados por otras clases se decoren con público.

6.javaBean

Un ejemplo simple de JavaBean:

La función se puede generar directamente haciendo clic con el botón derecho - "Generar, y también puede usar la tecla de método abreviado Alt + Insertar para abrir rápidamente Generar. La idea es muy inteligente. Si no usa el clic derecho para generar, presione directamente un conjunto o obtener y aparecerá el mensaje de función de generación de acceso directo correspondiente.Debo decir que la idea es realmente inteligente.

public class Person {
    private String age;
    private String name;
    private boolean flag;

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isFlag() {
        return flag;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }
}

2. Polimorfismo

1. Concepto e implementación del polimorfismo

El polimorfismo se refiere a la misma llamada de método, que puede tener diferentes comportamientos debido a diferentes objetos. En la vida real, el mismo método, la implementación específica será completamente diferente. Por ejemplo: el mismo método para llamar a la gente "descanso", Zhang San está durmiendo, Li Si está viajando, el maestro Gao Qi está escribiendo códigos y el profesor de matemáticas está haciendo problemas de matemáticas; lo mismo es llamar a la gente "comer", los chinos usa palillos Para las comidas, los británicos comen con cuchillo y tenedor, y los indios comen con las manos.

2. Los principales puntos del polimorfismo

(1) El polimorfismo es polimorfismo de método, no polimorfismo de atributo (el polimorfismo no tiene nada que ver con atributos)
(2) La existencia de polimorfismo debe tener 3 condiciones necesarias: herencia, reescritura de método y referencias de clase padre que apuntan a objetos de subclase.
(3) Después de que la referencia de la clase principal apunte al objeto de la clase secundaria, utilice la referencia de la clase principal para llamar al método anulado por la clase secundaria. En este momento, se produce el polimorfismo.

3. Código de muestra

Experimente los beneficios del polimorfismo a través del código: si no hay polimorfismo, ¡algunos lugares necesitan mucha reescritura!

También hay algo de conocimiento sobre la transformación de tipos, y lo leí por cierto.

public class Animals {
    public void shout(){
        System.out.println("叫了一声!");
    }

    //用static声明,animalShout()就是类方法,所以可以直接用函数名调用!!!!
    public static void animalShout(Animals a){ //到了这里相当于将传入的具体的动物类转化为Animals类
        a.shout();//这里会调用传入的具体的动物类的shout()函数
    }

    public static void main(String[] args) {
        Cat cat=new Cat();
        cat.catchMouse();
        animalShout(cat);
        //Dog dog=(Dog)cat;转换不了
        Animals a=new Dog();//向上类型转换,自动的
        Dog dog=(Dog)a;//强制类型转换,向下类型转换
        dog.guard();
        //报错,因为此时a已经转为Dog类型了,所以不能转换为Cat
        //Cat cat1=(Cat)a;
        //cat1.catchMouse();
    }
}

//多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。
class Dog extends Animals{
    @Override
    public void shout() {
        System.out.println("汪汪汪!");
    }

    public void guard(){
        System.out.println("狗看门!");
    }
}

class Cat extends Animals{
    @Override
    public void shout() {
        System.out.println("喵喵喵");
    }

    public void catchMouse(){
        System.out.println("猫抓老鼠!");
    }
}

class Mouse extends Animals{
    @Override
    public void shout() {
        System.out.println("吱吱吱");
    }
}

Producción:

猫抓老鼠!
喵喵喵
狗看门!

 

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_44593822/article/details/115358852
Recomendado
Clasificación