Clase abstracta , hemos escuchado que las clases abstractas son clases que pueden tener métodos abstractos y no se pueden instanciar. No podemos instanciar una clase abstracta en Java porque es abstracta, no está completa, por lo tanto, no se puede usar.
Ejemplo 1
Java
// Java program to demonstrate abstract class // cannot have instance public abstract class ClassOne { public void printSomething() { System.out.println("Hello in abstract class"); } } class CreateClassOne { public static void main(String[] args) { // instance of abstract // class "ClassOne" ClassOne obj = new ClassOne(); } }
Producción
prog.java:17: error: ClassOne is abstract; cannot be instantiated ClassOne obj = new ClassOne(); ^ 1 error
Ejemplo 2
Java
// Java code to demonstrate // Anonymous class public abstract class ClassOne { public void printSomething() { System.out.println("Hello in abstract class"); } } class InheritClassOne { public static void main(String[] args) { // obj points to anonymous subclass ClassOne obj = new ClassOne() {}; // calls the implementation // provided by ClassOne obj.printSomething(); } }
Hello in abstract class
¡La clase abstracta está instanciada aquí! ¡Pero eso no es posible!
Sí, la respuesta sigue siendo la misma, no se puede instanciar la clase abstracta, aquí en el segundo ejemplo no se crea el objeto de ClassOne sino la instancia de una subclase anónima de la clase abstracta. Y luego está invocando el método printSomething() en la referencia de clase abstracta que apunta al objeto de subclase obj. Cuando ha agregado { } mientras creaba el objeto en la segunda clase, el compilador lo toma como una clase anónima donde { } denota el cuerpo de la clase anónima .
Ejemplo 1
Java
// java program to demonstrate anonymous class interface NewClass { public void show(); } class AnonymousClassExample { public static void main(String[] args) { // nc points to anonymous class inside // the {} NewClass nc = new NewClass() { public void show() { System.out.println( "This is an anonymous class implementing interface"); } }; // calls the implementation // method of anonymous class nc.show(); } }
This is an anonymous class implementing interface
En este ejemplo, no se crea una instancia de la interfaz, pero una clase anónima implementa la nueva clase de interfaz. Ahora, es posible que haya entendido cómo funcionó el segundo ejemplo donde, en lugar de instanciar una clase abstracta, se creó una subclase anónima o una clase abstracta implementó una clase abstracta.
Ejemplo 2
Java
// Anonymous class implementing abstract class public abstract class ClassOne { public ClassOne() { System.out.println( "Anonymous(Unnamed) Subclass object Created"); } public void printSomething() { System.out.println( "Hello,in abstract class:printSomething method"); } public abstract void implementMethod(); } class AnonymousClassExample { public static void main(String[] args) { // anonymous class ClassOne obj = new ClassOne() { @Override public void implementMethod() { System.out.println( "Implemented abstract method in anonymous class"); } }; // calls abstract class implementation obj.printSomething(); // calls anonymous class implementation obj.implementMethod(); } }
Anonymous(Unnamed) Subclass object Created Hello,in abstract class:printSomething method Implemented abstract method in anonymous class
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA