Desarrollo de aplicaciones para android: clases java que debe (y no debe) ser extendido

Si una clase de Java no está roto, no lo arregles. Suponga que desea agregar funcionalidad a una clase Java existente. Si te gusta el Android de Actividad clase, pero el pre-declaradas Actividad clase no muestra nada en la pantalla. ¿Se vuelve a escribir de Android Actividad ¿clase? No.

En lugar de volver a escribir una clase existente, se extiende la clase. Incluso en una aplicación Android “Hola” no hacer nada, se escribe

MyActivity clase pública se extiende Actividad

Luego, en el Mi actividad La declaración de la clase, se escribe

onCreate (Bundle savedInstanceState) vacío @Overridepublic {super.onCreate (savedInstanceState) -setContentView (R.layout.main) -}

Tu Mi actividad clase crea una nueva funcionalidad mediante la extensión de la mayoría de Android Actividad funcionalidad mientras se sobreescriben el Actividad con muerte cerebral de clase onCreate método.

clases finales de Java

En la programación orientada a objetos, que se extiende una clase es la cosa más noble que puede hacer.

Video: Curso: Desarrollo de Aplicaciones Profesionales en Android - Clase #01

Sin embargo, algunas clases no están destinados a ser ampliada. Tomemos, por ejemplo, Java Cuerda clase. UN Cuerda es un Cuerda es un Cuerda. Usted no quiere que alguien está MyString.length método devuelva la cantidad de tiempo que se necesita para codificar los caracteres de una cadena. Para evitar que alguien haga algo inesperado, poco convencional, o poco común con los métodos de una cadena, los creadores de Java hicieron el Cuerda clase final:

Cadena public final class

Algunas de las clases declarados previamente de Android también son finales, incluyendo el Telefonía y MediaStore clases.

clases abstractas de Java

Al igual que una clase final odia ser extendida, una clase abstracta insiste en ser extendida. Android de ViewGroup es un ejemplo de una clase abstracta.

público abstracto ViewGroup clase {public void bringChildToFront (Ver infantil) {int index = indexOfChild (niño) -Si (índice gt; = 0) {removeFromArray (índice) -addInArray (niño, mChildrenCount) -child.mParent = este -}} protegido abstracto sin efecto OnLayout (boolean cambió, int l, int t, int r, int b) -}

Android de ViewGroup.java archivo es más de 3.700 líneas de largo. Por lo que este ejemplo tiene sólo una pequeña fracción del código del archivo. Sin embargo, se puede ver cómo se convierte en una clase abstracta. Para sorpresa de nadie, la palabra abstracto precede a la palabra clase. Pero la palabra abstracto También inicia la declaración de algunos métodos que pertenecen a la clase.

Video: Android desde cero (Con android Studio)

Los fundadores de Android decidieron que la idea de una ViewGroup es útil. Estaban en lo correcto, porque sus diseños favoritos de Android (LinearLayout, Disposición relativa, y así sucesivamente) son subclases de ViewGroup. También entendieron que a partir de un tipo de ViewGroup a otro, algunas funciones no cambia. Por ejemplo, el ejemplo anterior define una bringChildToFront método, y subclases de ViewGroup heredar este método.

Pero los fundadores también se dieron cuenta de que algunos aspectos de una ViewGroup no tiene sentido a menos que trabaje con un tipo particular de grupo. Por ejemplo, una LinearLayout posiciones cosas una tras otra, y una Disposición relativa posiciones cosas de arriba, abajo, y al lado de la otra. Así que el código anterior no tiene un lleno-soplado OnLayout método.

Video: Clases de Verano 2017 | Java | Diseño Gráfico | Aplicaciones web | Marketing Digital

los OnLayout declaración no tiene cuerpo método. Pero Android requiere que cada subclase de la ViewGroup clase para declarar su propia OnLayout método. Java hace cumplir este requisito cuando se declara método OnLayout ser abstracto.

Como desarrollador, no se puede crear un objeto de una clase abstracta. Si se escribe

Video: CURSO DE DESARROLLO DE APLICACIONES EN ANDROID , CONSTRUCCION DE UNA APLICACION

grupo ViewGroup = new ViewGroup () -

Java te dice que estás comportando mal. Para hacer algo útil con el ViewGroup clase, se necesita una subclase de la ViewGroup clase. La subclase tiene una versión concreta de cada método abstracto en el ViewGroup clase:

MyLayout clase de paquetes com.allmycode.samples-importación e importación android.content.Context android.view.ViewGroup-pública se extiende ViewGroup {MyLayout pública (contexto Contexto) {super (contexto) -} @ vacío Overrideprotected OnLayout(Boolean cambió, int l, int t, int r, int b) -}}
Artículos Relacionados