Aquí, vamos a aprender que se puede utilizar class y abstract ambos con un método en Java? ¿Es posible utilizar final y abstract ambos con un método en Java?
No, no es posible utilizar final y abstract tanto con un método de simultáneamente.
- Podemos utilizar final sólo con un método sin abstract y es válida y el código se ejecutará sin error.
- Del mismo modo, podemos usar final sólo con un método sin final y es válida y el código se ejecutará sin error.
- Como sabemos que no podemos usar abstract y abstract ambos con un método a la vez, porque hay dos cosas que discutir:
- En primer lugar, si declaramos final con el método de entonces el método abstract necesidad de anulación (es decir abstract método debe ser reemplazado en su aplicación abstract).
- En segundo lugar, si declaramos class con el método de entonces el método final es final y no puede anular el método (método es decir final no debe ser anulado en su final implementación).
- pocos puntos que recordar acerca del método class y abstract:
- lo que sucederá, si utilizamos final sólo con un método?
- lo que sucederá, si utilizamos abstract sólo con un método?
- lo que sucederá, si utilizamos final y abstract ambos con un método?
Veremos cada uno de los casos anteriores, uno por uno con la ayuda de un ejemplo …
1) El uso de la palabra clave “final” con un método en Java
Ejemplo:
// Java program to demonstrate the example of
// using "abstract" keyword with a method
abstract class AbstractMethodClass {
// Abstract Method Declaration
abstract void display();
}
public class Main extends AbstractMethodClass {
// override display() of AbstractMethodClass
public void display() {
System.out.print("abstract specifiers are allowed" + " ");
System.out.print("for Methods");
}
public static void main(String[] args) {
// class instantiation
Main m = new Main();
// calling display() of Main class
m.display();
}
}
salida
abstract specifiers are allowed for Methods
Conclusión: podemos utilizar solamente abstract sin abstract final los métodos.
2) El uso de palabras clave “for” con un método en Java
Ejemplo:
// Java program to demonstrate the example of
// using "final" keyword with a method
class FinalMethodClass {
// Final Method Definition
final void display() {
System.out.print("final specifier is allowed" + " ");
System.out.print("for Methods");
}
}
public class Main extends FinalMethodClass {
// show() method definition
public void show() {
System.out.print("final method is not overridable");
}
public static void main(String[] args) {
// class instantiation
Main m = new Main();
FinalMethodClass fmc = new FinalMethodClass();
// calling display() of FinalMethodClass
fmc.display();
System.out.println();
// calling display() of Main
m.show();
}
}
salida
final specifier is allowed for Methods
final method is not overridable
Conclusión: Podemos utilizar solamente final sin final abstract los métodos.
3) El uso de “for” y “abstract” palabra clave tanto con un método en Java
Ejemplo:
// Java program to demonstrate the example of
// using "abstract" and "final" keyword both
// with a method
class AbstractFinalMethodClass {
// Abstract Method Declaration
abstract void display();
// Final Method Definition
final void show() {
System.out.print("final method is not overridable");
}
}
public class Main extends AbstractFinalMethodClass {
// override display() of AbstractFinalMethodClass
public void display() {
System.out.println("abstract method is overridable");
}
public static void main(String[] args) {
// Main class object instantiation
Main m = new Main();
// AbstractFinalMethodClass object instantiation
AbstractFinalMethodClass afmc = new AbstractFinalMethodClass();
// calling display() of Main class
m.display();
// calling show() of AbstractFinalMethodClass
afmc.show();
}
}
salida
/Main.java:5: error: AbstractFinalMethodClass is not abstract and
does not override abstract method display() in AbstractFinalMethodClass
class AbstractFinalMethodClass {
^
1 error
Conclusión: No podemos utilizar tanto final y abstract con los métodos ya las sustituciones de método final en su aplicación abstract pero el método class no puede anular en su final aplicación.