|
Escrito por Gerardo Valeri
|
|
jueves, 22 de febrero de 2007 |
class A{
void m1(String s1) {}
}
class B extends A {
void m1(String s1) {} // 1
void m1(boolean b) {}// 2
void m1(byte b) throws Exception {} // 3
String m1(short s){return new String();} //4
private void m1(char c) {} // 5
protected void m1(int i) {} // 6
}
¿Cuál es el resultado al compilar este programa?
a. Compile-time error at line 1
b. Compile-time error at line 2
c. Compile-time error at line 3
d. Compile-time error at line 4
e. Compile-time error at line 5
f. Compile-time error at line 6
g. None of the above
Respuesta:
g. None of the above
Si un método de una superclase no es privado y es accesible desde el código de una subclase, entonces cualquier método de una subclase que tenga el mismo cabezal ("signature") que el método de la superclase tiene que tener el mismo valor de retorno(esto es hasta la versión 1.4) o pueden tener como valor de retorno una subclase del valor de retorno del método de la superclase(desde la versión 5.0).
La clase A declara un método, el nombre es m1 y tiene un solo parámetro de tipo String. La clase B extiende de A y declara seis métodos que sobrecargan el nombre m1. El método B.m1(String s1), sobrescribe el método de la superclase A.m1(String s1). Los métodos que sobrecargan pueden tener distinto valor de retorno y deben que tener distinta lista de parámetros. Un método sobrescrito no puede lanzar una excepción checked que no lance el método que sobrescribe de la superclase, ni alguna que no sea una subclase de las lista del cabezal del método sobrescrito.
|
|
Modificado el ( domingo, 04 de marzo de 2007 )
|