contenido
1. Orientado a objetos, orientado a procesos
Dentro de un método normal, no se pueden definir variables estáticas.
Los métodos estáticos no pueden definir variables estáticas
¿Por qué la función principal es estática?
encapsulación de implementación privada
esto representa una referencia al objeto actual
1. Clases y Objetos
1. Orientado a objetos, orientado a procesos
¿Qué es una clase?
¿Qué es un objeto?
¡Estos son dos conceptos muy abstractos! ! ! ! ! ! ! !
Antes de aclarar los conceptos de clases y objetos, hablemos de lo que es orientado a objetos y orientado a procesos , para así introducir nuestros conceptos de clases y objetos.
Orientado al proceso: tome la ropa como ejemplo: tome un lavabo, ponga agua, ponga ropa, ponga detergente en polvo, frote las manos, cambie el agua, escurra y seque la ropa.Este proceso está orientado al proceso.
Orientado a objetos: Tome la ropa como ejemplo: una persona pone la ropa en la lavadora, vierte el detergente en polvo y la cuelga para que se seque. No necesita preocuparse por cómo se realiza todo el proceso de lavado de ropa. Ellos solo necesita encontrar el objeto, crear el objeto y usar el objeto. Por ejemplo, cuando usamos la función toString, no nos importa el proceso de implementación específico de la función toString. Podemos entregarlo directamente a Arrays para que nos ayude a implementarlo. Esto está orientado a objetos.
¿De dónde vienen los objetos? Los objetos vienen de las clases. Los objetos vienen solo después de que existen las clases. Las personas, las lavadoras y los detergentes para la ropa son clases separadas. Los objetos se crean a partir de clases, y los llamamos creación de objetos. Los objetos se crean, cada objeto tiene algunos comportamientos y algunas propiedades, y luego los objetos pueden completarse entre sí. Esto es orientado a objetos y orientado a procesos.
Para estar orientado a objetos, tenemos que encontrar objetos, y los objetos provienen de las clases ¿De dónde provienen las clases? Necesitamos abstraer. Por ejemplo: todos somos personas, y las palabras de las personas tienen atributos comunes, como nombre, género, edad, comer, dormir, todos tendrán estos, que es equivalente a una plantilla, a través de la cual se pueden generar una gran cantidad de objetos, estos los objetos tienen estas mismas propiedades. Es abstraer a esta persona y crear objetos por esta persona, y esta persona es una clase. Si realmente quieres a esa persona, déjala ser un objeto y una entidad, necesitas crearla y crearla a través de algo nuevo.
definir clase
class Person{ }//定义一个类,这个类叫Person,类名一定要是大驼峰 class Person{ //类里面包含字段,也叫做属性,也叫做成员变量 //也包含方法 //一个类就是由方法和字段组成的 public String name;//属性 public int age;//属性 //什么是方法?可以解读为这个人的行为 public void eat(){ System.out.println(name+" 正在吃饭"); } public void sleep(){ System.out.println(name+" 正在睡觉"); } }
El proceso de crear un objeto a partir de una clase, lo llamamos instanciación en terminología, e instanciamos el objeto a través de la nueva palabra clave.
public class TestDemo { public static void main(String[] args) { Person person//定义一个变量person,此时类Person也相当于类型的意思,和int a = 10,a的类型是int一样 } }
La variable persona definida por la clase Persona es una variable de referencia, lo que significa que su valor inicial puede ser nulo
public class TestDemo { public static void main(String[] args) { Person person = null; } }
objeto instanciado
public class TestDemo { public static void main(String[] args) { Person person = new Person();//由类Person实例化了一个对象 } }
Una clase puede instanciar múltiples objetos.
public class TestDemo { public static void main(String[] args) { Person person = new Person();//由类Person实例化了一个对象 Person person1 = new Person(); Person person2 = new Person(); Person person3 = new Person(); Person person4 = new Person(); } }
miembros de la clase
Variable miembro ordinaria
Los campos se definen fuera del método interno de la clase, si se definen dentro del método se denominan variables locales y si se definen fuera del método se denominan variables miembro.
Cómo acceder a las variables miembro, las variables miembro se dividen en dos tipos: (variables miembro ordinarias, variables miembro estáticas). Se accede a las variables miembro ordinarias por referencia.
Las variables miembro tienen un valor predeterminado si no se les asigna un valor inicial
Cómo asignar valores a las variables miembro
Si es una variable miembro ordinaria, su memoria está en el objeto, no compartida por todos los objetos. Cada objeto tiene su propio nombre y edad.
Los métodos también se dividen en dos tipos: uno se llama método de miembro ordinario y el otro se llama método de miembro estático.
Se accede a los métodos de miembros ordinarios de la misma manera, y se accede a mis métodos a través de referencias a objetos.
variable miembro estática
Las variables modificadas por estática se denominan variables miembro estáticas, también denominadas variables de clase, y se colocan en el área de método.
Se accede a las variables de miembros estáticos a través de classname.Propiedades/métodos de miembros estáticos.
independiente del objeto
class Person{ public String name; public int age; public static int count; public void eat(){ System.out.println(name+" 正在吃饭"); } public void sleep(){ System.out.println(name+" 正在睡觉"); } } public class TestDemo { public static void main(String[] args) { Person.count++; System.out.println(Person.count); System.out.println("================"); Person.count++; System.out.println(Person.count); } }
imprimir resultado;
Count es una variable miembro estática modificada por estática, que se coloca en el área de métodos, no pertenece a un objeto, pero pertenece a una clase. El acceso correcto a las variables o métodos de miembros estáticos solo requiere el nombre de la clase. Las variables/métodos de miembros estáticos están bien. Todas las cosas estáticas solo se almacenan en el área de métodos, por lo que agregar 2 veces es el conteo en sí mismo, por lo que la segunda impresión El resultado es 2.
Dentro de un método normal, no se pueden definir variables estáticas.
1. La variable definida por estática es una variable de clase y pertenece a la clase (la definición dentro del método pertenece al método, por lo que es incorrecta)
2. La invocación del método eat requiere que se invoque la referencia correspondiente. Pero si puede definir variables estáticas, la clase Person puede llamarse, por lo que las dos son directamente contradictorias, eat necesita la referencia correspondiente para llamar. size solo necesita que se llame a la clase. Entonces, dentro de un método normal, las variables estáticas no se pueden definir.
Los métodos estáticos no pueden definir variables estáticas
La variable definida estáticamente es una variable de clase, que pertenece a la clase (si está definida dentro del método, pertenece al método, lo que no se puede hacer, por lo que está mal)
Resumen: las variables miembro estáticas no se pueden definir en los métodos
Es posible llamar a métodos estáticos en métodos ordinarios
class Person{ public String name; public int age; public static int count; public void eat(){ System.out.println(name+" 正在吃饭"); } public void sleep(){ staticFunc(); System.out.println(name+" 正在睡觉"); } public static void staticFunc(){ System.out.println("static::func"); } } public class TestDemo { public static void main(String[] args) { Person person = new Person(); person.eat(); person.sleep(); } }
imprimir resultado:
No se puede llamar a un método normal dentro de un método estático
Los métodos normales no se pueden llamar dentro de los estáticos, porque los métodos estáticos no dependen de los objetos y se pueden llamar a través del nombre de la clase, pero los métodos ordinarios no se pueden llamar sin objetos.
¿Por qué la función principal es estática?
Una referencia no puede apuntar a varios objetos al mismo tiempo
¿La referencia está definitivamente en la pila? Ciertamente no
Mira la línea verde, dibuja el análisis
La persona en minúsculas pertenece a la variable miembro de la clase TestDemo
última modificación
encapsulación de implementación privada
Las dos palabras clave privado/público significan "Control de acceso"
Una variable de miembro o un método de miembro modificado por público puede ser utilizado directamente por la persona que llama a la clase.
La persona que llama a la clase no puede utilizar una variable miembro o un método miembro modificado por privado.
Proporcionar una interfaz
imprimir resultado:
esto representa una referencia al objeto actual
Método de construcción
Método constructor: el nombre del método y el nombre de la clase son iguales, y el método constructor es especial y no tiene valor de retorno
¿Para qué sirve el constructor? Necesitamos saber que la generación de un objeto (la instanciación del objeto) se divide en varios pasos, 1. Asignar memoria para el objeto, 2. Llamar al constructor apropiado.
Este es un constructor
El modificador de acceso anterior puede ser público,
Llame al constructor:
imprimir resultado:
Constructores sin parámetros y con uno y dos parámetros
Llame al constructor:
la diferencia de esto
El primero:
El segundo:
Representa el método eat del objeto actual.
El tercero:
llamar al constructor sin argumentos,
imprimir resultado:
Esta función debe colocarse en la primera línea y solo puede almacenarse en el constructor
bloque de código
Bloque de código nativo:
dos corchetes
Bloques de código de ejemplo y bloques de código estático:
No importa cuántos objetos se generen, el bloque de código estático solo se ejecutará una vez y se ejecutará primero. Después de que se ejecuta el bloque de código estático, se ejecuta el bloque de código de instancia (bloque de constructor) y luego se ejecuta el constructor.
Demasiado cansado, ¡adiós! ! ! ! ! !