Abstract class object creation java

Previous
Next

How can we create object for abstract class?

  • Every abstract class need extension(Child class).
  • Extended class must override(implement body) for abstract methods.
  • By instantiating Child class, we can access Parent(abstract) class functionality.
abstract class Parent
{
	void m1()
	{
		System.out.println("Parent class concrete m1()");
	}
	abstract void m2();
}
class Child extends Parent
{
	void m2() // override
	{
		System.out.println("Overridden m2() method of Abstract class");
	}
}
class Test
{
	public static void main(String args[])
	{
		Child obj = new Child();
		obj.m1();
		obj.m2();
	}
}

How can we access non-static members of abstract class?

  • Static members can access directly using class name.
  • Non static members must be accessed using object address.
  • Abstract class cannot be instantiated directly.
  • By creating Child class object, we can access Parent(abstract) functionality.

Note: When any Child class of abstract class is unable to override all the specifications(abstract methods) become another abstract class.

abstract class Vehicle
{
	void fuel()
	{
		System.out.println("fuel....");
	}
	abstract void ac();
	abstract void pow_wind();
}
abstract class Car extends Vehicle
{
	void ac()
	{
		System.out.println("ac.....");
	}
}
class Swift extends Car
{
	void pow_wind()
	{
		System.out.println("pow_windows....");
	}
}
class Main 
{
	public static void main(String[] args) 
	{
		Swift car = new Swift();
		car.fuel();
		car.ac();
		car.pow_wind();
	}
}

Object creation process in abstract classes:

  • We can define constructors in abstract class.
  • When we create object of Child class, abstract class constructor will be invoked automatically by using super() method
abstract class Parent
{
	Parent()
	{
		System.out.println("Parent(abstract) class object creation...");
	}
}
class Child extends Parent
{
	Child()
	{
		// super();
		System.out.println("Child's instantiation...");
	}
}
class Main
{
	public static void main(String[] args) 
	{
		new Child();
	}
}

Can we place non-static variables inside abstract class?

  • Yes allowed.
  • Instance variables get memory inside object.
  • We can create object of abstract class through Child class.
  • We can initialize the variables using super() method in object creation process.
import java.util.Scanner ;
abstract class Parent
{
	int x;
	Parent(int a)
	{
		this.x = a ;
	}
	abstract void details();
}
class Child extends Parent 
{
	int x ;
	Child(int a, int b)
	{
		super(a);
		this.x = b ;
	}
	void details()
	{
		System.out.println("Parent's x value : "+super.x);
		System.out.println("Child's x value : "+this.x);
	}
}
class Main
{
	public static void main(String[] args) 
	{
		Scanner scan = new Scanner(System.in);
		System.out.print("Enter Parent's x value : ");
		int a = scan.nextInt();

		System.out.print("Enter Child's x value : ");
		int b = scan.nextInt();

		Child obj = new Child(a, b);
		obj.details();
	}
}
Previous
Next

Add Comment

Courses Enquiry Form