1. Clase
    1. una clase es una plantilla para la creación de objetos de datos según un modelo predefinido. Las clases se utilizan para representar entidades o conceptos, como los sustantivos en el lenguaje. Cada clase es un modelo que define un conjunto de variables y métodos apropiados para operar con dichos datos. Cada objeto creado a partir de la clase se denomina instancia de la clase.
      1. Utilidad
        1. se utilizan para crear modelos computacionales de objetos, estos objetos pueden ser cualquier cosa, desde objetos tangibles del mundo real hasta objetos imaginarios que cumplan una función.
          1. Pueden ser:
          2. Public:
          3. Accesibles desde cualquier otra clase en la misma librería.
          4. Abstract
          5. Aquellas que tienen por lo menos un método abstracto
          6. Final
          7. Son las que terminan la cadena de herencia. Útiles por motivos de seguridad y eficiencia de un programa
          8. Synchronizable
          9. Especifica que sus métodos son sincronizados, evitando problemas con los, de forma que estos no pueden empezar a correr un método si no ha acabado el otro.
  2. Atributos
    1. Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades, se guardan en variables denominadas de instancia, y cada objeto particular puede tener valores distintos para estas variables.
      1. Pueden ser:
        1. Public
        2. Protectec
        3. Private
        4. Package
  3. Abstracción
    1. consiste en la generalización conceptual de un determinado conjunto de objetos y de sus atributos y propiedades, dejando en un segundo término los detalles concretos de cada objeto. Con la abstracción se consigue pasar del plano material al plano mental.
      1. TIPOS
        1. Abstracción de datos
        2. Abstracción de control
  4. Polimorfismo
    1. Esta propiedad permite enviar el mismo mensaje a objetos de diferentes clases, de forma que cada uno de ellos responda a ese mismo mensaje de modo distinto dependiendo de su implementación. el único requisito que deben cumplir los objetos que se utilizan de manera polimórfica es saber responder al mensaje que se les envía.
      1. TIPOS
        1. polimorfismo de sobrecarga
          1. ocurre cuando las funciones del mismo nombre existen, con función similar, en clases que son completamente independientes unas de otras (estas no tienen que ser clases secundarias de la clase objeto).
        2. polimorfismo paramétrico
          1. es la capacidad para definir varias funciones utilizando el mismo nombre, pero usando parámetros diferentes (nombre y/o tipo)
        3. polimorfismo de inclusión
          1. Permite llamar un método de objeto sin tener que conocer su tipo intrínseco
  5. Declaración
    1. Primero se coloca el nivel de acceso, seguido, la la palabra clave class. El nivel de acceso precede a la palabra clave class y finalmente el nombre de la clase. Dentro de la clase se declararán los métodos y atributos necesarios.
  6. Características
    1. Los atributos agregan metadatos al programa.
    2. El programa puede examinar sus propios metadatos o los metadatos de otros programas mediante la reflexión.
    3. Atributos como MarshallAs se utilizan mucho en los escenarios de interoperabilidad COM.