class OverloadDemo { void test() { System.out.println("Sin parametros"); } // Sobrecarga el metodo test con un parámetro entero void test(int a) { System.out.println("a: " + a); } // Sobrecarga el metodo test con dos parametros enteros void test(int a, int b) { System.out.println("a y b: " + a + " " + b); } // Sobrecarga el metodo test con un parámetro double double test(double a) { System.out.println("double a: " + a); return a*a; } }
class Overload { public static void main(String args[]) { OverloadDemo ob = new OverloadDemo(); double result; // llama a todas las versiones de test() ob.test(); ob.test(10); ob.test(10, 20); result = ob.test(123.2); System.out.println("Resultado de ob.test(123.2): " + result); } }
La salida del programa sería:
Sin parametros a: 10 a y b: 10 20 a double: 123.2 Resultado de ob.test(123.2): 15178.2
class OverloadDemo { void test() { System.out.println("Sin parametros"); } // Sobrecarga el metodo test con dos parametros enteros void test(int a, int b) { System.out.println("a y b: " + a + " " + b); } // Sobrecarga el metodo test con un parámetro double void test(double a) { System.out.println("Dentro de test(double) a: " + a); } } class Overload { public static void main(String args[]) { OverloadDemo ob = new OverloadDemo(); int i = 88; ob.test(); ob.test(10, 20); ob.test(i); // esto llama a test(double) ob.test(123.2); // esto llama a test(double) } }
class Box { double width; double height; double depth; Box(double w, double h, double d) { width = w; height = h; depth = d; } Box() { width = -1; // utiliza -1 para indicar height = -1; // que una caja no está depth = -1; // inicializada } Box(double len) { width = height = depth = len; } double volume() { return width * height * depth; } }
class OverloadCons { public static void main(String args[]) { Box mybox1 = new Box(10, 20, 15); Box mybox2 = new Box(); Box mycube = new Box(7); double vol; vol = mybox1.volume(); System.out.println("El volumen de mybox1 es " + vol); vol = mybox2.volume(); System.out.println("El volumen de mybox2 es " + vol); vol = mycube.volume(); System.out.println("El volumen de mycube es " + vol); } }
class Test { int a, b; Test(int i, int j) { a = i; b = j; } // devuelve true si o es igual al objeto llamante boolean equals(Test o) { if(o.a == a && o.b == b) return true; else return false; } } class PassOb { public static void main(String args[]) { Test ob1 = new Test(100, 22); Test ob2 = new Test(100, 22); Test ob3 = new Test(-1, -1); System.out.println("ob1 == ob2: " + ob1.equals(ob2)); System.out.println("ob1 == ob3: " + ob1.equals(ob3)); } }
Uno de los ejemplos más usuales es en constructores para hacer copias de objetos:
Box(Box ob) { width = ob.width; height = ob.height; depth = ob.depth; } Box mybox = new Box(10,20,15); Box myclone = new Box(mybox);
class Test { void meth(int i, int j) { i *= 2; j /= 2; } } class CallByValue { public static void main(String args[]) { Test ob = new Test(); int a = 15, b = 20; System.out.println("a y b antes de la llamada:"+a+" "+b); ob.meth(a, b); System.out.println("a y b despues de la llamada:"+a+" "+b); } }
class Test { int a, b; Test(int i, int j) { a = i; b = j; } // pasa un objecto void meth(Test o) { o.a *= 2; o.b /= 2; } }
class CallByRef { public static void main(String args[]) { Test ob = new Test(15, 20); System.out.println("ob.a y ob.b antes de la llamada: " + ob.a + " " + ob.b); ob.meth(ob); System.out.println("ob.a y ob.b después de la llamada: " + ob.a + " " + ob.b); } }
class Test { int a; // acceso por defecto public int b; // acceso publico private int c; // acceso privado void setc(int i) { // establece el valor de c c = i; } int getc() { // obtiene el valor de c return c; } }
class AccessTest { public static void main(String args[]) { Test ob = new Test(); // Esto es correcto, a y b pueden ser accedidas directamente ob.a = 10; ob.b = 20; // Esto no es correcto y generara un error de compilación // ob.c = 100; // Error! // Se debe acceder a c a través de sus métodos ob.setc(100); // OK System.out.println("a, b, y c: " + ob.a + " " + ob.b + " " + ob.getc()); } }
class UseStatic { static int a = 3; static int b; static void meth(int x) { System.out.println("x = " + x); System.out.println("a = " + a); System.out.println("b = " + b); } static { System.out.println("Bloque estático inicializado."); b = a * 4; } public static void main(String args[]) { meth(42); } }
final int FILE_NEW = 1; final int FILE_OPEN = 2; final int FILE_SAVE = 3; final int FILE_SAVEAS = 4; final int FILE_QUIT = 5;
// Muestra la utilización de algunos metodo de la clase String class StringDemo2 { public static void main(String args[]) { String strOb1 = "Primera cadena"; String strOb2 = "Segunda cadena"; String strOb3 = strOb1; System.out.println("La longitud de strOb1 es: " + strOb1.length()); System.out.println("El carácter de la posición 3 de strOb1 es: " + strOb1.charAt(3)); if(strOb1.equals(strOb2)) System.out.println("strOb1 == strOb2"); else System.out.println("strOb1 != strOb2"); if(strOb1.equals(strOb3)) System.out.println("strOb1 == strOb3"); else System.out.println("strOb1 != strOb3"); } }
// Presenta todos los argumentos de la linea de ordenes class CommandLine { public static void main(String args[]) { for(int i=0; i<args.length; i++) System.out.println("args[" + i + "]: " + args[i]); } }
Si ejecutamos este programa con:
kvm -classpath . CommandLine esto es una prueba 100 -1
obtendremos como salida:
args[0]: esto args[1]: es args[2]: una args[3]: prueba args[4]: 100 args[5]: -1