JavaSE orientado a objetos basics_inheritance

heredar

Herencia significa que la subclase hereda las características y los comportamientos de la clase principal, de modo que el objeto de la subclase (instancia) tiene los campos de instancia y los métodos de la clase principal, o la subclase hereda los métodos de la clase principal, de modo que la subclase tiene el mismo comportamiento que la clase padre.

La herencia es una tecnología que usa la definición de una clase existente como base para crear una nueva clase. La definición de una nueva clase puede agregar nuevos datos o nuevas funciones, o usar las funciones de la clase principal, pero no puede heredar selectivamente la clase de padres.

La herencia es una relación mutua de is-a

Ventajas heredadas

  • Coloque los atributos comunes de todas las subclases en la clase principal para compartir el código, evitar la duplicación y mejorar la eficiencia del desarrollo.
  • Puede facilitar la modificación de la implementación heredada de la extensión.

Defectos heredados

  • Cuando la clase principal cambia, la clase secundaria debe cambiar
  • La herencia rompe la encapsulación Para la clase padre, sus detalles de implementación son transparentes para la subclase.
  • La herencia es una fuerte relación de acoplamiento

palabras clave especiales

paquete paquete

Un paquete es un contenedor para clases o interfaces, un espacio de nombres que se usa para evitar conflictos de nombres y un concepto de nombres lógicos que no tiene nada que ver con ubicaciones físicas específicas.

En una implementación específica, el nombre del paquete suele corresponder al nombre del directorio

que es un paquete

  • Un paquete es una organización de clases que proporciona espacios de nombres y control de acceso.
  • organización similar a un sistema de archivos

Declarar clases en paquete paquete

gramática:package 包名称;

  • Declarar un requisito de paquete es la primera declaración de un archivo de código fuente. La información de la anotación se puede agregar antes de la definición del paquete
  • Puede haber como máximo una declaración de paquete en un programa, y ​​los archivos de código fuente sin una definición de paquete se convierten en parte del paquete predeterminado.
//默认包中的类可以访问其它命名包或者只能同包访问,其它包不能访问默认包中的类
public class A1 {
    
    
	public void cc() {
    
    
		System.out.println("小胖子醒醒!");
	}
}
  • Si hay una declaración de paquete en el programa, debe ser la primera declaración (solo puede haber comentarios o líneas en blanco delante de ella)
  • Reglas de nomenclatura de paquetes:
    • todo en minúsculas
    • Use el método de inversión de nombre de dominio para definir, por ejemplo, para un proyecto de un grupo xxxx.com, defina el nombre del paquete como: com.xxxx
      • Si la subdivisión también puede introducir la parte de definición de funciones, como el acceso a la base de datos com.yanan.dao

El papel del paquete.

  • Los paquetes agrupan los archivos de código fuente relacionados
    • com.yanan.dao almacena los archivos de clase relacionados con la base de datos de operaciones
    • com.yanan.biz almacena archivos comerciales relacionados
  • Los paquetes reducen los problemas con las colisiones de nombres
  • Puede usar el paquete para indicar a qué paquete específico pertenece la clase en el archivo fuente

uso del paquete

  • Si otras personas quieren usar la clase en el paquete, deben usar el nombre completo
import java.util.Date;
public class A{
    
    
public static void main(String[] args){
    
    
Date now=new Date(); //使用类的简称Date,而不是全名称java.util.Date
}
}
//用法2:全称
java.util.Date now=new java.util.Date(); //不需要import
  • Para simplificar la escritura, Java proporciona la declaración de importación:import package_name.*;
import java.util.*;
//使用java.util包中的所有类都不需要再使用import java.util.类名
  • Importar una clase en el paquete:import java.util.ArrayList;

Importar importación de paquetes

  • El paquete importado por Java por defecto es java.lang
System.out.println("显示输出");//不需要import java.lang.System
//同包中的其它类不需要导入
package com.yan;
public class A{
    
    }
package com.yan;
public class B{
    
    
public void pp(){
    
    
A a=new A1(); //不需要import com.yan.A
}
}
  • Importe las clases en el paquete: nombre del paquete de importación nombre de la clase, por ejemplo import java.util.Date;
  • importar el paquete completo; import 包名称.* ;eg import java.util.*;
  • Si usa una clase en lugar de un paquete, debe usar el nombre completo de la clase: nombre del paquete.nombre de la clase, por ejemplo, java.util.Date dd=new java.util.Date();

Descripción del paquete

package-info.java puede describir el rol de un paquete

//这是一个测试包
package com.yan.test;

Las clases públicas y privadas no se pueden definir en la información del paquete, pero las clases amigables y las constantes del paquete se pueden definir y proporcionar a las clases bajo el paquete unificado para compartir.

package com.yan.a; 
import lombok.Data; 

class Constants{
    
     
	public static final String NAME="Yanjun"; 
}
@Data 
class Teacher{
    
     //包中的类可以直接使用 
	private String className; 
}

Finalmente, para el alcance del paquete de anotaciones, continuaremos explicando más adelante

Paquetes y calificadores de alcance

//定义不包含再其它类中的外部类时,class前的范围限定词可以使用public或者默认 
//public 到处可见 没有限定词只能同包访问 
package com.bao; 

public class A{
    
     
	public static void main(String args){
    
     
		B b=new B();//语法正确 
	} 
}
class B{
    
    } 

package com.bao1; 
public class C{
    
     
	public static void main(String[] args){
    
     
		B b=new B1();//语法错误,因为B类是默认class 
	} 
}
//成员属性和成员方法:定义在class内部,除了构造器(匿名内部代码块)和析构器之外的其它内容 
public class A{
    
     
	public A(){
    
    } //方法名称和类名称一致,包括大小写,而且没有返回类型声明---构造器 
	//构造器方法不能直接调用,只能通过new运算符进行间接调用new A()系统自动执行A()方法 
	
	public int A(){
    
    } //语法正确,但是不是构造器。可以直接调用,new A().A() 
	
	//成员方法 
	public范围限定词 返回数据类型 方法名称(参数类型1 形参名称1,...){
    
    //如果没有返回值则 类型为void
		return xxx; 返回值必须和返回类型声明一致;如果返回类型为voidreturn后面不能 带任何数据 
	} //成员方法的调用为 对象名.方法名称(实际参数列表) 
}

abstracto

El proceso de ignorar los detalles de un objeto o entidad y centrarse solo en sus características esenciales puede simplificar la funcionalidad y el formato, y ayudar a los usuarios a interactuar con los objetos.

Es el arma mágica básica para que los seres humanos resuelvan problemas. Una buena estrategia de abstracción puede controlar la complejidad del problema y mejorar la versatilidad y escalabilidad del sistema.

La abstracción incluye principalmente la abstracción de procesos y la abstracción de datos.

  • La abstracción de procesos consiste en extraer operaciones con definiciones funcionales claras en el dominio del problema y tratarlas como una entidad.
  • La abstracción de datos es un método de abstracción de mayor nivel que la abstracción de procesos. Une los atributos y comportamientos del objeto de descripción para lograr una abstracción unificada, a fin de lograr una verdadera simulación de objetos del mundo real.

amable

Las clases son plantillas y planos para construir objetos. En términos sencillos, las clases son equivalentes a dibujos arquitectónicos y los objetos son equivalentes a edificios. El proceso de construir un objeto a partir de una clase se denomina creación de una instancia del objeto. En Java, una "clase" se define mediante la palabra clave class, seguida del nombre de la clase

El proceso de diseño y escritura de clases es en realidad un proceso abstracto de atributos y comportamientos comunes de las entidades.

Por ejemplo, es un individuo específico: Zhao Xiaopang, para almacenar el objeto de investigación en la computadora, se define un nuevo tipo de datos Estudiante

class Student{
    
    }

Analizar las propiedades relacionadas con el dominio del problema:

class Student {
    
    
	private Long id;如果使用包装类,则默认值为null
	private String username=”yanjun”;
	private int age;如果使用简单类型,则数值型默认为0,布尔型为false
}

Analizando el Comportamiento Relacionado con el Dominio del Problema - Metodología

class Student{
    
    
	public void study(){
    
    }
	public void sleep(){
    
    }
	
	private Long id;如果使用包装类,则默认值为null
	private String username=”yanjun”;
	private int age;
}

El propósito de definir una clase es almacenar un objeto específico en la computadora, por lo que es necesario crear el objeto correspondiente, y el método de creación es consistente con el significado de la variable definida en el tipo simple.

Student s1=new Student();
s1.方法名(); 调用成员方法

new Stduent().sleep();

La programación orientada a objetos se puede considerar como programación orientada a clases. El proceso de escribir una clase es equivalente a definir un nuevo tipo de datos.
El núcleo de la programación objeto-objeto es la programación orientada a la abstracción, y el núcleo de la programación orientada a la abstracción es la programación orientada a la interfaz.

herencia resumida

La herencia consiste en expandirse sobre la base de las clases existentes para generar nuevas clases, lo que respalda el concepto de clasificación jerárquica. Las clases existentes se denominan clases principales, superclases o clases base, mientras que las clases recién creadas se denominan subclases o clases derivadas. Cuando existen los mismos atributos y comportamientos en varias clases, extraiga estos contenidos en una sola clase, luego varias clases no necesitan definir estos atributos y comportamientos, siempre que hereden esa clase. Varias clases se pueden llamar subclases, y una sola clase se llama clase principal o superclase.

  • Use la palabra clave extends para crear una relación de herencia entre clases
    • Herencia significa que la subclase hereda las características y los comportamientos de la clase principal, de modo que el objeto de la subclase (instancia) tiene los campos de instancia y los métodos de la clase principal, o la subclase hereda los métodos de la clase principal, de modo que la subclase tiene el mismo comportamiento que la clase padre.
    • La herencia es una tecnología que usa la definición de una clase existente como base para crear una nueva clase. La definición de una nueva clase puede agregar nuevos datos o nuevas funciones, o usar las funciones de la clase principal, pero no puede heredar selectivamente la clase de padres.
    • La herencia es una relación mutua de is-a
  • En Java, todo lo que pertenece a la clase principal puede ser heredado por la subclase.
    • ¿Se pueden heredar las propiedades privadas? - dos respuestas
    • Además de tener las propiedades y métodos de la clase principal (con todos los miembros de la clase principal, pero tenga en cuenta que el constructor y el destructor no son miembros
      ), la subclase también puede crear sus propias características.
public class Animal{
    
    
	private Long id;
	private String type;
	public void pp(){
    
    }
}
public class Person extends Animal{
    
    
	private String username;
	//这里就包含了方法pp
}
可以减少代码,而且易于维护
  • Escenario de uso sugerido: coloque operaciones y métodos comunes en la clase principal y defina métodos especiales en la subclase. Los beneficios son: 1. Evita la duplicación de código. 2. Evita las inconsistencias causadas por factores humanos

Supongo que te gusta

Origin blog.csdn.net/qq_39756007/article/details/127233160
Recomendado
Clasificación