<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6627318164106228024</id><updated>2011-08-02T11:03:15.673-07:00</updated><title type='text'>adresc</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://adresc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6627318164106228024/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://adresc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Karma police</name><uri>http://www.blogger.com/profile/11125811802044155637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6627318164106228024.post-2198594712043834491</id><published>2010-02-12T15:32:00.000-08:00</published><updated>2010-02-12T15:48:59.438-08:00</updated><title type='text'>Instalar Java En Ubuntu Linux y plugins para navegadores</title><content type='html'>&lt;div&gt;En este artículo veremos como instalar Java en Ubuntu 9, pero podría funcionar en versiones anteriores e incluso en otras distribuciones, en aquellas basadas en Ubuntu como Linux Mint.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Además habilitaremos el plugin correspondiente para tener funcionando los applets de Java en los navegadores Firefox y Chrome para Linux.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lo primero que tendremos que hacer será instalar el JRE desde los repositorios de Ubuntu. Ubuntu dispone de los siguientes paquetes oficiales de SUN listos para ser instalados:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sun-java6-bin - Contains the binaries&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sun-java6-demo - Contains demos and examples&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sun-java6-doc - Contains the documentation&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sun-java6-fonts - Contains the Lucida TrueType fonts from the JRE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sun-java6-jdk - Contains the metapackage for the JDK&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sun-java6-jre - Contains the metapackage for the JRE&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sun-java6-plugin - Contains the plug-in for Mozilla-based browsers&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sun-java6-source - Contains source files for the JDK&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bastará con instalar los paquetes que seleccioné en el siguiente comando (desde una consola / terminal):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Listo, con esto tendremos funcionando Java en Firefox para Linux gracias al paquete:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;sun-java6-plugin&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Pero ahora, para tenerlo funcionando en chrome haremos lo siguiente:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sudo mkdir /opt/google/chrome/plugins&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sudo cd /opt/google/chrome/plugins&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/i386/libnpjp2.so .&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nota, por ejemplo si tu procesador es amd de 64 el último comando podría ser así (esto depende de tu procesador, el comando anterior era para intel de 32 bits):&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;sudo ln -s /usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/amd64/libnpjp2.so .&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Explicando los comandos:&lt;/div&gt;&lt;div&gt;Primero creamos un directorio para los plugins de chrome.&lt;/div&gt;&lt;div&gt;Enseguida nos cambiamos a ese directorio.&lt;/div&gt;&lt;div&gt;Finalmente creamos una liga suave al archivo que hará funcionar el plugin desde la carpeta del JRE a la carpeta de los plugins de Chrome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Más info sobre &lt;/div&gt;&lt;div&gt;http://caminolibre.com/index.php?option=com_content&amp;amp;task=view&amp;amp;id=20&amp;amp;Itemid=11&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Listo! si tienes tu navegador abierto reinicialo y ya está.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Saludos.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;http://caminolibre.com/&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6627318164106228024-2198594712043834491?l=adresc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adresc.blogspot.com/feeds/2198594712043834491/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6627318164106228024&amp;postID=2198594712043834491' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6627318164106228024/posts/default/2198594712043834491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6627318164106228024/posts/default/2198594712043834491'/><link rel='alternate' type='text/html' href='http://adresc.blogspot.com/2010/02/instalar-java-en-ubuntu-linux-y-plugins.html' title='Instalar Java En Ubuntu Linux y plugins para navegadores'/><author><name>Karma police</name><uri>http://www.blogger.com/profile/11125811802044155637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6627318164106228024.post-768633756048226757</id><published>2008-01-30T01:53:00.000-08:00</published><updated>2008-01-30T14:08:21.784-08:00</updated><title type='text'></title><content type='html'>                                                          &lt;p style="text-align: center;"&gt;&lt;b&gt;Métodos static, sobreescritura y sobrecarga, constructores.&lt;/b&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;a title="Google docs" href="http://docs.google.com/Doc?id=dcwzkrvc_51cj7kzwcz"&gt;Google docs&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;p style="text-align: center;"&gt;&lt;a title="pdf" href="http://caminolibre.com/code/java/manuales/Classes_Methods_SCJP.pdf" id="yr.m"&gt;pdf&lt;/a&gt; &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;Puntos a tratar.&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt;Desarrolle código que declare métodos &lt;b&gt;static&lt;/b&gt; y &lt;b&gt;no static&lt;/b&gt;, y si es apropiado use nombres de métodos que se apeguen a los estándares de JavaBeans. Desarrolle código que declare y use una lista de argumentos de tamaño variable.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt; Dando un ejemplo, determine si un método está &lt;b&gt;sobreescribiendo&lt;/b&gt; o &lt;b&gt;sobrecargando&lt;/b&gt; correctamente a otro método, identifique valores de &lt;b&gt;retorno&lt;/b&gt; válidos para un método.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;ul&gt;&lt;li&gt; Dando un conjunto de clases y superclases, desarrolle &lt;b&gt;constructores&lt;/b&gt; para una o más clases. Dando una declaración de una clase, determinar si un constructor por defecto debe ser creado, si es así, determine el comportamiento de este constructor. Dando una clase anidada o no anidada, escriba código para instanciar dicha clase.&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;   &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; &lt;p&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;Introducción.&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;br&gt; Repasando: un programa básicamente se conforma por 3 elementos:&lt;br&gt; - Datos&lt;br&gt; - Operaciones sobre los datos&lt;br&gt; - La lógica que determina las operaciones&lt;br&gt; &lt;br&gt; En Java las clases juntan en una misma entidad los datos y las operaciones sobre ellos. Una clase se forma de variables y métodos.&lt;br&gt; &lt;br&gt; Una parte importante de la POO es la herencia. Podemos heredar de una clase y la clase derivada hereda los atributos y métodos no privados de la clase padre.&lt;br&gt; Para mantener esto sencillo, Java permite sólo herencia simple, sin embargo para solucionar las implicaciones de esto existen las interfaces.&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; Sintaxis básica de un método:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt; &amp;lt;modifier&amp;gt; &amp;lt;returnType&amp;gt; &amp;lt;methodName&amp;gt; ( &amp;lt;Parameters&amp;gt;) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; // body of the method. The code statements go here.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br&gt; Como ejemplo podemos tener:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt; public int square (int number) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     return number*number;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br&gt; Usando el método:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt; int myNumber = square(2);&lt;/span&gt; //Donde myNumber almacenaría un 4&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; &lt;p&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;Métodos y variables static.&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;br&gt; Los metodos y variables static son compartidos por todas las instancias de una clase y se declaran usando el modificador static.&lt;br&gt; &lt;br&gt; El modificador static puede ser aplicado a una variable, un método y un bloque de código.&lt;br&gt; &lt;br&gt; Debido a que un elemento static es visible por todas las instancias, cuando se efectúe un cambio todas las instancias verán el cambio.&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; Ejemplo 1.&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt;  class StaticExample {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    static int staticCounter=0;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;             int  counter=0;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    StaticExample() {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           staticCounter++;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           counter++;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  class RunStaticExample {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     public static void main(String[] args) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            StaticExample se1 = new StaticExample();&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            StaticExample se2 = new StaticExample();&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Value of staticCounter for se1: " + se1.staticCounter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Value of staticCounter for se2: " + se2.staticCounter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Value of counter for se1: " + se1.counter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Value of counter for se2: " + se2.counter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;            &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            StaticExample.staticCounter = 100;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Value of staticCounter for se1: " + se1.staticCounter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Value of staticCounter for se2: " + se2.staticCounter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  }&lt;/span&gt;&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; Este código produce la salida:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt; Value of staticCounter for se1: 2&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Value of staticCounter for se2: 2&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Value of counter for se1: 1&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Value of counter for se2: 1&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Value of staticCounter for se1: 100&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Value of staticCounter for se2: 100&lt;/span&gt;&lt;br&gt; &lt;br&gt; Precaución: Una variable static se inicializa cuando se carga una clase, mientras que una variable de instancia cuando un objeto es creado.&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; Al igual que los atributos un método static pertenece a la clase no a una instancia.&lt;br&gt; Un método static no puede acceder a variables o métodos no-static.&lt;br&gt; Debido a que los métodos static no pertenecen pertenecen a toda la clase pueden ser ejecutados incluso sin haber creado alguna instancia.&lt;br&gt; Por ejemplo, todas las clases contienen el método static llamado main que se ejecuta sin necesidad de instanciar la clase.&lt;br&gt; &lt;br&gt; Ejemplo:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt;  class MyClass {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        String salute = "Hello";&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public static void main(String[] args){&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Salute: " + salute);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  }&lt;/span&gt;&lt;br&gt; &lt;br&gt; No compila por que un método static trata de acceder a un atributo no-static.&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; Se dice que una clase consiste en variables y métodos, esto es cierto la mayoría de las veces, sin embargo una clase puede contener un bloque de código static afuera de un método, es decir que no pertenece a ningún método.&lt;br&gt; &lt;br&gt; Por ejemplo podría necesitar ejecutar cierta tarea antes de que la clase sea instanciada, o antes de usar el método main.&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt;  class StaticCodeExample {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    static int counter=0;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    static {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         counter++;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        System.out.println("Static Code block: counter: " + counter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    StaticCodeExample() {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Construtor:  counter: " + counter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    public static void main(String[] args) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                System.out.println("Main method");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  public class  RunStaticCodeExample {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    public static void main(String[] args) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          System.out.println("Start");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          StaticCodeExample sce = new StaticCodeExample();&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          System.out.println("main: counter: " + sce.counter);                 &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; Si ejecutamos la primer clase obtenemos:&lt;br&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Static Code block: counter: 1&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Main method&lt;/span&gt;&lt;br&gt; &lt;br&gt; Debido a que primero se carga la variable static después se ejecuta el bloque de código static y finalmente el main.&lt;br&gt; &lt;br&gt; Ahora bien si ejecutamos el segundo ejemplo obtenemos:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt; Start&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Static Code block: counter: 1&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; Construtor:  counter: 1&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; main: counter: 1&lt;/span&gt;&lt;br&gt; &lt;br&gt; En el momento en que se carga la clase StaticCodeExample esta carga la variable static y ejecuta el bloque de código static, luego entra el constructor.&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; El código static es ejecutado sólo una vez al momento de cargar la clase, independientemente de donde se encuentre, el siguiente ejemplo no alteraría el funcionamiento del anterior:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt;  class StaticCodeExample {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    static int counter=0;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;   &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    StaticCodeExample() {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("Construtor:  counter: " + counter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    public static void main(String[] args) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                System.out.println("Main method");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;   &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    static {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        counter++;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;       System.out.println("Static Code block: counter: " + counter);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  }&lt;/span&gt;&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; &lt;p&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;Métodos con número variable de parámetros.&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;br&gt; Asuma que necesita crear un método que pueda ser llamado con cualquier número de argumentos, por ejemplo:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt; myMethod(1);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; myMethod(1,2);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; myMethod(1,2,3);&lt;/span&gt;&lt;br&gt; &lt;br&gt; En versiones previas de Java necesitaríamos crear 3 métodos distintos, pero a partir de Java 5 podemos hacerlo con un sólo método, estos métodos son llamados: métodos con número variable de parámetros o método con argumentos de tamaño variable.&lt;br&gt; &lt;br&gt; Las reglas son las siguientes:&lt;br&gt; &lt;br&gt; - Sólo puede haber una lista de parámetros de tamaño variable.&lt;br&gt; - Si existen parámetros individuales, la lista de parámetros de tamaño variable ira al final.&lt;br&gt; - La lista consiste en el tipo de dato seguido de tres puntos y el nombre.&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt; Ejemplo:&lt;br&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; class MyClass {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     public void printStuff(String greet, int... values) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        System.out.println("Start");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        for (int v : values ) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           System.out.println( greet + ":" + v);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   public class VarargTest {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;       public static void main(String[] args) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         MyClass mc = new MyClass();&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         mc.printStuff("Hello", 1);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         mc.printStuff("Hey", 1,2);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         mc.printStuff("Hey you", 1,2,3);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         mc.printStuff("Hi");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;       }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br&gt;&lt;br&gt;Produce la siguiente salida:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;Start&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Hello:1&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Start&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Hey:1&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Hey:2&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Start&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Hey you:1&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Hey you:2&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Hey you:3&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Start&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;El programa invoca al método printStuff(...) que recibe un número variable de argumentos de tipo entero.&lt;br&gt;&lt;br&gt;Un error en el compilador lo causaría sustituir la declaración del método por:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt; public void printStuff(int... values, String greet) {&lt;/span&gt;&lt;br&gt;&lt;br&gt;Recordemos que debe ser el último el parámetro de tamaño variable.&lt;br&gt;&lt;br&gt;Además, sólo puede haber uno variable, la siguiente línea también sería errónea:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;public void printStuff(String greet, int... values, double... dnum) {&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Otro ejemplo lo tenemos a continuación:&lt;br&gt;    &lt;br&gt;&lt;span style="font-family: Courier New;"&gt;public class VarargsTest &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;{&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     // calculate average&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     public static double average( double ... numbers )&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        double total = 0.0; // initialize total&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;  &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        // calculate total using the enhanced for statement&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        for ( double d : numbers )              &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           total += d;                          &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;  &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        return total / numbers.length;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     } // end method average&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;  &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     public static void main( String args[] ) &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        double d1 = 10.0;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        double d2 = 20.0;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        double d3 = 30.0;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        double d4 = 40.0;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        System.out.printf( "d1 = %.1fnd2 = %.1fnd3 = %.1fnd4 = %.1fnn", d1, d2, d3, d4 );&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;  &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        System.out.printf( "Average of d1 and d2 is %.1fn", average( d1, d2 ) ); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        System.out.printf( "Average of d1, d2 and d3 is %.1fn", average( d1, d2, d3 ) );&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        System.out.printf( "Average of d1, d2, d3 and d4 is %.1fn", average( d1, d2, d3, d4 ) );&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     } // end main&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;} //&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;Nombrando métodos de acuerdo a las reglas de JavaBeans&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;Un JavaBean es un tipo de clase Java que es definida respetando ciertas reglas, incluyendo las convenciones de nombramiento para sus variables y métodos. Las reglas son las siguientes:&lt;br&gt;&lt;br&gt;- Las variables private de un JavaBean, llamadas propiedades, sólo pueden ser accedidas por medio de métodos getter y setter. Las propiedades se nombran por ejemplo: myProperty.&lt;br&gt;- Todas las propiedades no-boolean tienen un método getter usado para obtener el valor de la propiedad. se nombran por ejemplo: getMyProperty().&lt;br&gt;- Todas las propiedades tienen un método setter usado para modificar el valor de una propiedad. Ejemplo setMyProp().&lt;br&gt;- Los métodos setter y getter deben ser public, para que cualquiera que use el bean pueda invocarlos.&lt;br&gt;- Un método setter regresa void y tiene un parámetro que representa el tipo de la propiedad.&lt;br&gt;- Un método getter no recibe parámetros y regresa el tipo de dato correspondiente al que recibe el setter.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Ejemplo:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;public class ScoreBean {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  private double meanScore;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  // getter method for property meanScore&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   public double getMeanScore() {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      return meanScore;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;// setter method to set the value of the property meanScore&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   public void setMeanScore(double score) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      meanScore = score;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;}&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;br&gt;Note los nombres y la variable a la que se refieren.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;Clases anidadas.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;Todas las clases vistas hasta ahora entran en la categoría de top-level. Java permite definir clases dentro de una clase top-level, se les llama anidadas.&lt;br&gt;Estas clases se verían así:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;class &amp;lt;OuterClassName&amp;gt; {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   // variables and methods for the outer class&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   ...&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      class &amp;lt;NestedClassName&amp;gt; {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          // variables and methods for the nested class&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          ...&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; }&lt;/span&gt;&lt;br&gt;&lt;br&gt;Como sabemos los elementos de una clase pueden ser static y no-static.&lt;br&gt;Una clase no-static anidada se le llama clase interna.&lt;br&gt;Una clase static anidada simplemente se le dice anidada.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Características:&lt;br&gt;- Una clase interna (clase no-static) es asociada con una instancia de la clase contenedora.&lt;br&gt;- Una clase interna tiene acceso a todos las partes de la clase contenedora, incluso los private.&lt;br&gt;- Al igual que variables y métodos static una clase static refiere a toda la clase, no a una instancia, de igual manera la clase anidada static no puede acceder a los elementos no-static de la clase contenedora.&lt;br&gt;- Una clase interna por ser no-static es asociada sólo con una instancia de la clase contenedora y por lo tanto no se pueden definir partes static dentro de una clase interna.&lt;br&gt;- Una instancia de una clase interna sólo puede existir dentro de una instancia de la clase contenedora, justo como otro miembro no-static de la clase contenedora.&lt;br&gt;- Las clases anidadas pueden ser declaradas abstract o final, con el mismo significado.&lt;br&gt;- Los modificadores de acceso como public, private o protected pueden ser usados por clases internas y tendrán el mismo significado que otros elementos.&lt;br&gt;- Las clases anidadas pueden ser declaradas en cualquier bloque de código y tendrán acceso a todas las variables dentro del bloque de código.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Ejemplo:&lt;br&gt;  &lt;br&gt; &lt;span style="font-family: Courier New;"&gt;     class TestNested { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public static void main(String[] args) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           String ext = "From external class"; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           MyTopLevel mt = new MyTopLevel(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           mt.createNested(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           MyTopLevel.MyInner inner = mt.new MyInner(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           inner.accessInner(ext);            &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;  &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        class MyTopLevel{ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         private String top = "From Top level class"; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           MyInner minn = new MyInner(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public void createNested() { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;             &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            minn.accessInner(top); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         }  &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;     &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           class MyInner { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           public void accessInner(String st) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;              System.out.println(st); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      }&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Producirá:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;From Top level class&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;From external class&lt;/span&gt;&lt;br&gt;&lt;br&gt;Note como es instanciada la clase interna en la clase externa:&lt;br&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;MyTopLevel mt = new MyTopLevel();&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;MyTopLevel.MyInner inner = mt.new MyInner();&lt;/span&gt;&lt;br&gt;&lt;br&gt;Algo similar podría lograrse con:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;MyTopLevel.MyInner inner = new MyTopLevel().new MyInner();&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Ahora bien, una clase anidada static:&lt;br&gt;&lt;br&gt;  &lt;br&gt;&lt;span style="font-family: Courier New;"&gt;      class TestStaticNested { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public static void main(String[] args) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           String ext = "From external class"; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            new MyTopLevel().gateToStatic(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           MyTopLevel.StaticNested sn = new MyTopLevel.StaticNested(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           sn.accessStaticNested(ext);    &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;  &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        class MyTopLevel{ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         private static String top = "From top level class"; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;          &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         public static void gateToStatic(){ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            StaticNested s = new StaticNested(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            s.accessStaticNested(top); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         }   &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;  &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         static class StaticNested { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           public void accessStaticNested(String st) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;              System.out.println(st); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;         }  &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;     &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;Constructores.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;Cuando instanciamos una clase el objeto se almacena en memoria. Dos elementos están asociados a este proceso el operador new y los métodos especiales llamados constructores.&lt;br&gt;&lt;br&gt;El constructor tiene el nombre de la clase y no especifica valor de retorno. Cuando el JRE encuentra una sentencia new lo mapea en memoria y después ejecuta el constructor para inicializar ese espacio en memoria.&lt;br&gt;&lt;br&gt;Ejemplo:&lt;br&gt;&lt;br&gt;ComputerLab csLab&lt;span style="font-family: Courier New;"&gt; = &lt;/span&gt;new ComputerLab&lt;span style="font-family: Courier New;"&gt;();&lt;/span&gt;&lt;br&gt;&lt;br&gt;1.- Localiza espacio en memoria para la instancia csLab.&lt;br&gt;2.- Inicializa las variables de csLab.&lt;br&gt;3.- Ejecuta el constructor ComputerLab().&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Si no se especifica un constructor el compilador provee uno llamado constructor default, si por el contrario existe al menos uno definido el compilador no ya no crea alguno.&lt;br&gt;&lt;br&gt;- Afuera de la clase, el constructor sólo puede ser llamado por medio de la sentencia new.&lt;br&gt;- Adentro de la clase un constructor puede llamarse desde otro constructor únicamente.&lt;br&gt;&lt;br&gt;- Con this podemos llamar a otro constructor de la misma clase.&lt;br&gt;- Con super llamaremos constructores de la clase padre llamada también super-clase.&lt;br&gt;En ambos casos siempre es la primera línea del constructor.&lt;br&gt;&lt;br&gt;- Si no se incluye una llamada con super o con this el compilador pone una llamara super al principio del constructor&lt;br&gt;- Si se agrega una llamada super el compilador ya no interfiere.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Ejemplo:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;     class TestConstructors { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;       public static void main(String[] args) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            new MySubSubClass(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        class MySuperClass { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           int superVar = 10; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        MySuperClass(){ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;           System.out.println("superVar: " + superVar); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }   &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        MySuperClass(String message) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          System.out.println(message + ": " + superVar); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      }  &lt;/span&gt;      &lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;        &lt;br&gt;&lt;span style="font-family: Courier New;"&gt;       class MySubClass extends MySuperClass { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            int subVar = 20; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            MySubClass() { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;               super("non default super called"); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;               System.out.println("subVar: " + subVar); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;       }   &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;       &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      class MySubSubClass extends MySubClass { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            int subSubVar = 30; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            MySubSubClass() { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;               this("A non-deafult constructor of MySubSubClass"); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;               System.out.println("subSubVar: " + subSubVar); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;             &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;       MySubSubClass(String message){ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;              System.out.println(message); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;       }  &lt;/span&gt; &lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt; &lt;br&gt;Note que MySubSubClass hereda de MySubClass y esta a su vez de MySuperClass, si compilamos obtenemos:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;non default super called:10&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;subVar: 20&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;A non default constructor of MySubSubClass&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;subSubVar: 30&lt;/span&gt;&lt;br&gt;&lt;br&gt;Al ejecutar la tercera línea el constructor MySubSubClass() es llamado y el llama a MySubSubClass(String message).&lt;br&gt;Como este constructor no especifica ninguna llamada el compilador coloca una llamada super().&lt;br&gt;A continuación se ejecuta el constructor MySubClass() que especifica la llamada al constructor MySuperClass(String message)&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Ahora bien, el compilador puede llevarnos a un error de la siguiente manera:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;class A {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      int myNumber;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   A(int i) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      myNumber = i;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;}&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;class B extends A {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     String myName;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     B (String name) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      myName = name;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;}&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;br&gt;Debido a que el compilador coloca una llamada super() al principio del constructor de la clase B, sin embargo el constructor para la clase A recibe un parámetro. Para solucionarlo podríamos agregar un constructor default a la clase A.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;font color="#cc0000"&gt;&lt;b&gt;Sobreescritura y sobrecarga de métodos.&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;Son dos características notables de Java.&lt;br&gt;&lt;br&gt;- Sobreescribir permite modificar el funcionamiento de un método heredado.&lt;br&gt;- Sobrecargar permite usar el mismo método con diferentes objetivos.&lt;br&gt;&lt;br&gt;Estas dos características dan facilidad, extensibilidad y flexibiladad al código de Java.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;b&gt;Sobreescritura.&lt;/b&gt;&lt;br&gt;&lt;br&gt;- No puede sobreescribir un método que es declarado final.&lt;br&gt;- No puede cambiar un método declarado static para hacerlo no-static.&lt;br&gt;- El sobreescrito debe tener el mismo valor de retorno.&lt;br&gt;- Los parámetros deben ser el mismo número y del respectivo tipo, en el mismo orden.&lt;br&gt;- No puedes sobreescribir un método para hacerlo menos accesible. Ejemplo generará error sobreescribir un método public y declararlo protected. Lo contrario es posible.&lt;br&gt;- Si el método a sobreescribir tiene una declaración throws:&lt;br&gt;   * El método sobreescrito tendrá throws también.&lt;br&gt;   * Cada excepción incluida en la sentencia throws deberá estar en el método sobreescrito o una subclase de este.&lt;br&gt;- Si el método sobreescrito tiene thows el método a sobreescribir no tiene que tenerlo.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Ejemplo:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;protected int aMethod(String st, int i, double number);&lt;/span&gt;&lt;br&gt;&lt;br&gt;Sobreescritura del método válidas:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;protected int aMethod(String st,         Valid   Same signature&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;int i, double number)&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;protected int aMethod(String st,         Valid   Same signature&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;int j, double num)&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;protected double aMethod(String st,      Invalid Different return type&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;int i, double number)&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;protected int aMethod(int i,             Invalid Argument types are in different order&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;String st, double number)&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;protected int aMethod(String st,         Invalid Different number of types&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;int i, double number, int j)&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;protected int  aMethod(String st, int i) Invalid Different number of types&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;int aMethod(String st, int i,            Invalid Default modifier is less public&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;double number)                                   than protected&lt;/span&gt;&lt;br&gt; &lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;  &lt;br&gt;Otro ejemplo:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;    public class Animal {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public static void testClassMethod() {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("The class method in Animal.");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public void testInstanceMethod() {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("The instance method in Animal.");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;    public class Cat extends Animal {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public static void testClassMethod() {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("The class method in Cat.");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public void testInstanceMethod() {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            System.out.println("The instance method in Cat.");&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        public static void main(String[] args) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            Cat myCat = new Cat();&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            Animal myAnimal = myCat;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            Animal.testClassMethod();&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;            myAnimal.testInstanceMethod();&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        }&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;b&gt;Sobrecarga.&lt;/b&gt;&lt;br&gt;&lt;br&gt;Nos ayudará a definir métodos con el mismo nombre.&lt;br&gt;&lt;br&gt;- Dos métodos sobrecargados no pueden tener una lista idéntica de parámetros.&lt;br&gt;- Los valores de retorno pueden ser los mismos o diferentes.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Ejemplo:&lt;br&gt; &lt;br&gt;&lt;span style="font-family: Courier New;"&gt;class TestAreaCalculator { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;public static void main(String[] args) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     AreaCalculator ac = new AreaCalculator(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     System.out.println("Area of a rectangle with length 2.0, and width 3.0: " + ac.calculateArea(2.0f, 3.0f)); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     System.out.println("Area of a triangle with sides 2.0, 3.0, and 4.0: " + ac.calculateArea(2.0, 3.0, 4.0)); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     System.out.println("Area of a circle with radius 2.0: " + ac.calculateArea(2.0)); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;} &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;} &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;class AreaCalculator { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  float  calculateArea(float length, float width) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      return length*width; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  double calculateArea(double radius) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      return ((Math.PI)*radius*radius); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  double  calculateArea(double a, double b, double c) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      double s = (a+b+c)/2.0; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      return  Math.sqrt(s*(s-a)*(s-b)*(s-c)); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;}&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Produce la salida:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;Area of a rectangle with length 2.0, and width 3.0: 6.0&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Area of a triangle with sides 2.0, 3.0, and 4.0: 2.9047375096555625&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;Area of a circle with radius 2.0: 12.566370614359172&lt;/span&gt;&lt;br&gt;&lt;br&gt;Un método heredado en una subclase puede ser sobreescrito y sobrecargado, por ejemplo:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;class VolumeCalculator extends AreaCalculator {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   int calculateArea (int i, int j) {&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   double calculateVolume (double x, int y, double z);&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   }&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; }&lt;/span&gt;&lt;br&gt;&lt;br&gt;El método calculateArea(...) es una versión sobrecargada del método heredado.&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;Ejemplos de sobrecargas en esta última clase:&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;int calculateArea(float a,  Invalid The method has the same name as methods&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;float b)                            inherited from the superclass CalculateArea. But&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                                    this method is neither correctly overridden nor&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                                    correctly overloaded. Hence the compiler will&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                                    generate an error on this.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;double calculateVolume      Valid   Same set of argument types but in different order.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;(double x, double y, int z)         Therefore it is a valid overloading of the existing&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                                    method.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;int calculateVolume         Invalid Same set of argument types in the same order as the&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;(double x, int z, double y)         previously defined method with the same name.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                                    Therefore, invalid overloading. It cannot be&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                                    overridden because the superclass does not have it.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                                    It will generate a compiler error.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;void CalculateVolume()      Valid   Different set of argument types from the existing&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;                                    method. Therefore valid overloading.&lt;/span&gt;&lt;br&gt;&lt;p class="pb" style="page-break-after: always;"&gt;&lt;/p&gt;&lt;br&gt;&lt;b&gt;Sobrecarga de constructores.&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Courier New;"&gt;Ejemplo:&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt; &lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt; public class ConstOverload{ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     public static void main(String[] args) { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;       new A(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;     } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  class A { &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;        int x=0; &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   A(){ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          this(5); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          System.out.println("A() "); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;      } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   A(int i){ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;  //      this(); &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;          System.out.println(i);   &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;   } &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;}&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6627318164106228024-768633756048226757?l=adresc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://adresc.blogspot.com/feeds/768633756048226757/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6627318164106228024&amp;postID=768633756048226757' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6627318164106228024/posts/default/768633756048226757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6627318164106228024/posts/default/768633756048226757'/><link rel='alternate' type='text/html' href='http://adresc.blogspot.com/2008/01/mtodos-static-sobreescritura-y.html' title=''/><author><name>Karma police</name><uri>http://www.blogger.com/profile/11125811802044155637</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
