I have read we can only instantiate an abstract class by inheriting it, but we cannot instantiate it directly.
However, I saw we can create an object with the type of an abstract class by calling a method of another class.
For example - LocationProvider
is an abstract class, and we can instantiate it by calling getProvider()
function in the LocationManager
class:
LocationManager lm = getSystemService(Context.LOCATION_PROVIDER); LocationProvider lp = lm.getProvider("gps");
How is the abstract class instantiate here?
Abstract classes are similar to interfaces. You cannot instantiate them, and they may contain a mix of methods declared with or without an implementation.
Abstract class, we have heard that abstract class are classes which can have abstract methods and it can't be instantiated. We cannot instantiate an abstract class in Java because it is abstract, it is not complete, hence it cannot be used.
An abstract class cannot be directly instantiated using the new keyword.
We can't instantiate an abstract class because the motive of abstract class is to provide a common definition of base class that multiple derived classes can share.
You can't directly instantiate an abstract class, but you can create an anonymous class when there is no concrete class:
public class AbstractTest { public static void main(final String... args) { final Printer p = new Printer() { void printSomethingOther() { System.out.println("other"); } @Override public void print() { super.print(); System.out.println("world"); printSomethingOther(); // works fine } }; p.print(); //p.printSomethingOther(); // does not work } } abstract class Printer { public void print() { System.out.println("hello"); } }
This works with interfaces, too.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With